我很好奇这段代码:
int a = 'ftyp'; // a == 1718909296
int b = *((int*)"ftyp"); // b == 1887007846
我的问题:为什么 a != b ?
我很好奇这段代码:
int a = 'ftyp'; // a == 1718909296
int b = *((int*)"ftyp"); // b == 1887007846
我的问题:为什么 a != b ?
int a = 'ftyp'; // a == 1718909296
设置a
为具有实现定义值的多字符常量。的值a
未由标准定义。有关详细信息,请参阅C 或 C++ 中的单引号与双引号。
int b = *((int*)"ftyp"); // b == 1887007846
是由于违反严格别名而导致未定义行为的原因。
没有根据的期望a == b
。