这两个代码是否相同
char ch = 'a';
printf("%d", ch);
Run Code Online (Sandbox Code Playgroud)
它会打印垃圾值吗?
我很困惑
printf("%d", '\0');
Run Code Online (Sandbox Code Playgroud)
这会打印0还是垃圾值?因为我这样做的时候
printf("%d", sizeof('\n'));
Run Code Online (Sandbox Code Playgroud)
它打印4.为什么是sizeof('\n')4个字节?C++中的相同内容打印1个字节.这是为什么?
所以这是主要问题
在c语言中printf("%d", '\0')应该打印0
在C++中printf("%d", '\0')应该打印垃圾?
peo*_*oro 36
%d打印一个整数:它将打印您角色的ascii表示.你需要的是%c:
printf("%c", ch);
Run Code Online (Sandbox Code Playgroud)
printf("%d", '\0');打印ascii表示'\0',为0(通过转义0,告诉编译器使用ascii值0.
printf("%d", sizeof('\n'));打印4因为字符文字是intC,而不是a char.
这应该打印字符的ASCII值,就像%d整数的转义序列一样.因此,作为参数给出的值printf在打印时被视为整数.
char ch = 'a';
printf("%d", ch);
Run Code Online (Sandbox Code Playgroud)
同样适用于printf("%d", '\0');NULL字符被解释为0整数的情况.
最后,sizeof('\n')是4,因为在C中,这个字符表示法代表相应的ASCII整数.所以'\n'与整数10相同.
这一切都取决于你给字节的解释.
在C中,字符常量表达式例如'\n'或'a'具有类型int(因此sizeof '\n' == sizeof (int)),而在C++中它们具有类型char.
声明printf("%d", '\0');应该只打印0; 表达式的类型'\0'是int,其值为0.
该语句printf("%d", ch);应打印该值的整数编码ch(对于ASCII,'a'== 97).