这个程序输出结果为什么是“1”?

websmy 2010-03-08 04:06:31
main()
{
int k,result;
k=0x00;
result=0x01<<k;

printf("The a's 1 complement(decimal) is %d\n", result);

printf("The a's 1 complement(hexidecimal) is %x\n", result);

getch();
}

这个程序输出结果为什么是“1”?
...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cy330206 2010-03-08
  • 打赏
  • 举报
回复
result=0x01 <<k;这句是个移位指令,因为k等于0.所以产生移位。所以result就是原来的值了
james_hw 2010-03-08
  • 打赏
  • 举报
回复
result=0x01 < <k;等价于result=0x01 < <0;

没有任何改变
冻结 2010-03-08
  • 打赏
  • 举报
回复
0x01 == 1
0x00 == 0

1<<0 = 1

1不位移当然是还是1.
binbinxiaogui 2010-03-08
  • 打赏
  • 举报
回复
因十进制,跟十六进制的0到9是一样的,数字
pengzhixi 2010-03-08
  • 打赏
  • 举报
回复
1左移0位不还是1那是几呢
yuzl32 2010-03-08
  • 打赏
  • 举报
回复
result=0x01

一直都没变过啊。

69,380

社区成员

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

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