C - 单引号与双引号

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?

R S*_*ahu 8

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有根据的.