gpt4 book ai didi

c - 添加两个字符并将结果分配给 C 中的 int

转载 作者:行者123 更新时间:2023-12-03 15:53:50 25 4
gpt4 key购买 nike

int main(){

char a = -5;
char b = -6;
int c = a+b;
return 0;
}
我使用 gcc 在不同架构中得到了不同的结果。 .
x86变量 c正确签名扩展,我得到 -11 .
在其他一些架构上 c不是符号扩展,你得到 a+b 的结果位转换为 int我得到 501 .
这是未定义的行为吗?

最佳答案

char有时是无符号类型。使用 signed charunsigned char如果你需要明确说明它。将打印添加到您的程序并在这两种情况下编译显示您的行为:

$ make example && ./example
cc example.c -o example
-11
对比:
$ CFLAGS=-funsigned-char make example && ./example
cc -funsigned-char example.c -o example
501

关于c - 添加两个字符并将结果分配给 C 中的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65636413/

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