question

red1981 2003-12-28 02:30:58
讨教几个问题,对于你得帮助,不胜感激!
(1)int x=12,y=5;
x%=(y%=2)结果为0; 是不是12%1等于0?即任何整数取1的模都为0?
(2)char x=3,y=6,z;
z=x^y<<2;
z的结果为11011,是怎么算出来的?
(3)x,a均是int型变量,x=(a=4,6*2)(我对这个表达形式不熟悉,能解释一下吗?),x=?(答案是12)
(4)0668和0x是不是合法的数据类型?

先谢了
...全文
23 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangwhat 2003-12-28
  • 打赏
  • 举报
回复
这好象是谭爷爷的书上的么,我说怎么看怎么那么熟悉的
startlove 2003-12-28
  • 打赏
  • 举报
回复
这里我就说一下你的第二个吧,
对于这个
char x=3,y=6,z;
z=x^y<<2

这个3,6是这个字符的ASCII码的值,
同样对于字符的运算是在ASCII码上的运算,所以会有这个结果,
要是改成这样,结果就不同了,
char x='3',y='6',z;
z=x^y<<2
这样这个Z的ASCII码就是51了,希望看完这个你能长一些知识!
Jinhao 2003-12-28
  • 打赏
  • 举报
回复
1,这个问题你已经回答了
2,
你先要明白^和<<的作用
^位取异或,就是两个操作数的相同位中只有一个为1,那该位就为1
<<位移,就是把位往左移
x=3=0000 0011[二进制]
y=6=0000 0110[二进制]
z=x^y<<2;
<<的优先级要高于^,所以先计算y<<2,这时y就等于0001 1000
在计算x^y,得到0001 1011=27
3,
x=(a=4,6*2)
()返回最右边逗号右边那个表达式的值,所以x=6*2=12
4,
0668不合法,头数字为0代表该数为8进制,那么8进制数只能由0-7组成
0x更不合法,0x只是代表16进制数,但后面没有数字

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧