不是太理解这个答案怎么出来的

#include"stdio.h"
void main()
{
char x=040;
printf("%o\n",x<<1);}
为啥输出的x是100主要是不理解char x=040 怎么得出x?char不是属于字节类型的吗?

题主你好,c语言里没有真正的char字符类型,char类型占1个字节,8bit,范围0-255,ascii码表把数值0-255各编了一个字符,
所以char类型本质上是0-255范围的整型。
char x = 040; C语言里赋值的时候0开头表示赋值的是8进制数据,0x开头表示16进制。

img

8进制用一位表示二进制的3位,40中的4就是二进制的100,40中的0就是二进制的000,
所以八进制40转换成二进制的结果 10 0000;
x<<1的结果就是0100 0000,按%o输出(8进制)输出结果应该是100 了