为什么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/