标题:输出结果
只看楼主
lyf
Rank: 1
等 级:新手上路
帖 子:238
专家分:0
注 册:2005-11-17
 问题点数:0 回复次数:5 
输出结果
下面的程序输出结果是64,为什么呢?麻烦大家给我解释一下。

main()

{char x=040;

printf("%d",x=x<<1);

}

搜索更多相关主题的帖子: 结果 输出 
2006-01-12 14:55
blackhold
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-3-21
得分:0 
%d是输出整形数,x=x&lt;&lt;1是撒意思???

2006-01-12 15:43
blackhold
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-3-21
得分:0 
若要输出字符可以改成%c

2006-01-12 15:43
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8074
专家分:6657
注 册:2005-11-7
得分:0 
以下是引用blackhold在2006-1-12 15:43:00的发言:
x=x<<1是撒意思???

<<是位移运算符,

main()

{char x=040;

printf("%c",x=x<<1);

}
这样应该可以


本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2006-01-12 16:15
shensheng4
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2005-8-7
得分:0 

这个题是不是该这么理解
首先x定义的是字符型的,所以x是字符;040是八进制的数,十进制的值为32,这时应该是指将ASCII码为32的字符(即空格)赋给x。
<<是按位左移运算符,按照十进制的想法来看就是将ASCII乘2,则x的值变为64D
所以按照%d输出得64
按照%c输出得"@"


梦想是不可能实现的,正因为如此才值得我们去追寻。 这是我选择的路,即使付出一切,我也毫无怨言。
2006-01-12 21:25
吸血鬼王
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-12-17
得分:0 

同意楼上!

2006-01-13 07:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-42573-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.593331 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved