gpt4 book ai didi

c - 为什么涉及变量的操作在C中不会溢出

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:01 24 4
gpt4 key购买 nike

我在 C 中有一个类似这样的代码:

int main(){
unsigned char var1;

var1 = 255;
var1 = var1 + 1;

printf("The result is = %i", var1);

}

我认为它会溢出,因为 var1 的最大类型最大为 255,所以当您将它递增到 1 时,它将是 256,但结果是 0。

但是当我像这样修改代码时:

int main(){
unsigned char var1;

var1 = 255+ 1;

printf("The result is = %i", var1);

}

结果给出一个溢出错误,如“警告:从‘int’到‘unsigned char’的无符号转换将值从‘256’更改为‘0’[-Woverflow]”。

为什么第一个代码没有溢出?

最佳答案

unsigned char(本质上是一个字节)的环绕是设计使然。

但是,您的第二个示例是添加两个整数。从一个int中的256转换为一个byte中的0构成信息丢失;因此警告。

关于c - 为什么涉及变量的操作在C中不会溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54413352/

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