gpt4 book ai didi

C - 单引号与双引号

转载 作者:太空狗 更新时间:2023-10-29 15:21:32 25 4
gpt4 key购买 nike

我对这段代码很好奇:

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

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

最佳答案

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

a 设置为多字符常量,它具有实现定义的值。 a 的值未由标准定义。参见 Single quotes vs. double quotes in C or C++了解更多详情。

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

是由于违反 strict aliasing 而导致未定义行为的原因.

a == b 的期望是错误的。

关于C - 单引号与双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38163949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com