繁体   English   中英

'\\ 0'的ASCII值与ASCII值0相同?

[英]The ASCII value of '\0' is same as ASCII value of 0?

我知道'\\ 0'的ASCII值是0,而ASCII值0是0x30,但是当我尝试使用printf打印它们的ASCII值时,我得到相同的输出:

printf("\'\\0\' : %d\n", '\0');
printf("\'\\0\' in hex : %x\n", '\0');
printf("0 : %d\n", 0);
printf("0 in hex: %x\n", 0);

输出:

'\0' : 0
'\0' in hex : 0
0 : 0
0 in hex: 0

为什么?

ASCII字符'0'与数字0不同。 您在第二对printf中打印整数0而不是'0'

尝试这个:

printf("'\\0' : %d\n", '\0');
printf("'\\0' in hex : %x\n", '\0');
printf("'0' : %d\n", '0');
printf("'0' in hex: %x\n", '0');

此外,您不需要转义'内部字符串。 也就是说, "'"很好,你不需要写"\\'"

你混淆0,'\\ 0'和'0'。

前两个是相同的; 它们只代表一个值为0的int

但是,'0'是不同的,并且表示具有'0'字符值的int ,即48

是的,字符文字'\\0'值为0 ,这与字符集无关。

(K&R2,2.3)“字符常量'\\ 0'表示值为零的字符,空字符。'\\ 0'经常被写入而不是0来强调某些表达式的字符性质,但数值只是0 “。

所有这些答案似乎都错过了\\0 ...

尝试这个:

printf("This line\0 might not completely appear");

这就是\\0的原因

所以你可以定义一个以NULL结尾的字符串......

#define TEST_STRING "Test"

与...截然不同

#define TEST_STRING "Test\0"

后者在某些情况下有用。

'\\ 0'的ASCII值确实为0.但'\\ 0'与'0'不同(注意反斜杠,它是转义符号)。

printf("0 : %d\n", '0');

像这样打印,你会得到48。

你的最后一行应该是

printf("0 in hex: %x\n", '0');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM