vc++6.0中用putchar('\0x41');为什么输出1?

来源:百度知道 编辑:UC知道 时间:2024/09/22 12:34:30
我的书上说,C语言的转义字符中,可用'\xhh'和'\0xhh'二位十六进制代表一个ASCII字符,但x不可大写。
可是在vc++6.0中,只有用putchar('x41')输出结果是a。
用putchar('\0x41');和putchar('\0X41');和putchar('\X41');,输出结果都是1?既然不能这么写,那么结果应该是随机的,或者报错,为什么都是1呢?
谢谢!

首先明确一下,正确的十六进制形式应该这样:
putchar('\x41');
下面解释输出1的现象的原因:
在计算机内部,char型是一个字节的,而C语言编译器实际上是用四个字节的空间来临时存储单引号里面的内容的。比如'\0x41'四个字节依次是'\0','x','4','1',然后,编译器会截取低八位的二进制数作为char型的值,也就是最后的那个1.

楼上说的很有道理,但是不明白如果按“putchar('\x41');”的输出方法,在编译器里存储后,为什么这里不截取‘低八位’的二进制作为其值呢?

问题maybe傻傻,请指点~谢谢!