4

我很好奇这段代码:

int a = 'ftyp';          // a == 1718909296
int b = *((int*)"ftyp"); // b == 1887007846

我的问题:为什么 a != b ?

4

1 回答 1

8
int a = 'ftyp';          // a == 1718909296

设置a为具有实现定义值的多字符常量。的值a未由标准定义。有关详细信息,请参阅C 或 C++ 中的单引号与双引号

int b = *((int*)"ftyp"); // b == 1887007846

是由于违反严格别名而导致未定义行为的原因。

没有根据的期望a == b

于 2016-07-02T19:56:34.320 回答