为什么char变量从分配的“ab”而不是“a”中得到“b”?

char c = 'ab';

printf("c: %c\n", c);

打印:
c: b

最佳答案

这是定义的实现,因为前面的答案已经说过了。

我的gcc将'ab'当作int来处理。如下代码:

printf( "sizeof('ab') = %zu \n", sizeof('ab') );
printf( "'ab' = 0x%08x \n", 'ab' );
printf( "'abc' = 0x%08x \n", 'abc' );

打印:
sizeof('ab') = 4
'ab' = 0x00006162
'abc' = 0x00616263

在您的代码中,该行:
char c = 'ab';

可以认为是:
char c = (char)(0x00006162 & 0xFF);

因此,c获得了“ab”的最后一个字符的值。在这种情况下,它是“b”(0x62)。

关于c - 如何确定将多字符char常量分配给char变量的结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11737320/

10-11 22:37
查看更多