cod*_*Dom 4 c double-quotes single-quotes
我对这段代码感到好奇:
int a = 'ftyp'; // a == 1718909296
int b = *((int*)"ftyp"); // b == 1887007846
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么一个!= b?
int a = 'ftyp'; // a == 1718909296
Run Code Online (Sandbox Code Playgroud)
设置a为多字符常量,具有实现定义的值.a标准未定义该值.有关详细信息,请参阅C或C++中的单引号与双引号.
int b = *((int*)"ftyp"); // b == 1887007846
Run Code Online (Sandbox Code Playgroud)
由于违反严格别名而导致未定义的行为.
期望是a == b有根据的.