gpt4 book ai didi

c - 为什么 'u0' = 30000 在 C 中?

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:15 25 4
gpt4 key购买 nike

代码如下:

#include <stdio.h>

int main()
{
printf("%d %c",'u0','u0');
return 0;
}

当我在我的机器上运行它时,输出是“30000 0”,我从未见过“u0”用于表示一个字符(或者实际上可能是一个整数)。也许这意味着字符/整数是无符号的?

最佳答案

这是一个多字符常量。它的类型为 int和一个实现定义的值。

引用 C 标准的最新草案(N1570),第 6.4.4.4 节第 10 段:

The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined.

至于为什么有这个具体值30000 ,显然你的编译器给出了常量 'u0''u' << 8 + '0' .自 'u'==117'0'==48 (在基于 ASCII 的字符集中),结果为 30000 .但是不要指望那个特定的值;它可能因其他编译器而异。

我建议不要使用这样的常量。

关于c - 为什么 'u0' = 30000 在 C 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33850753/

25 4 0