c语言的位运算疑惑

#include<stdio.h>
main()
{char x=040;
printf("%d\n",x=x<<1);
}
的运算结果为什么是64啊,在线求解

第1个回答  推荐于2017-10-31
x=040是八进制数,转化为二进制是00100000,左移一位就是01000000.追问

如何判断一个数是十进制还是八进制啊

追答

八进制数字每个数字最高位是7,满八进一

追问

以040为例,如何知道它是十进制还是八进制呢

追答

十进制的表示方法就是40.
八进制开头数字必须是0(这点很重要!!!!!!!!!!!!!!!!)

本回答被提问者采纳
第2个回答  2017-10-31
首先 x=040是8进制表示方式. 也就是10进制的32
然后 计算x=x<<1 左移一位后,x=64
输出x的十进制值,也就是结果为64
第3个回答  2012-03-23
八进制的040换成二进制是:100000
<<是:左移
x<<1的意思是向左移动一位结果是:1000000
%d的意思是十进制输入结果是:64
相似回答