这两个代码是否相同
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因为字符文字是int
C,而不是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).
归档时间: |
|
查看次数: |
137132 次 |
最近记录: |