c语言char型变量自增问题

发布网友 发布时间:2022-04-23 13:22

我来回答

5个回答

热心网友 时间:2023-10-15 10:32

您好,

因为char类型的取值范围是-128~127。所以当自增到127之后,再加1得到的值不是128,而是溢出之后的-128。接下来按自增的话从-128一直加到127,又再次溢出变成-128。
换句话说,a<128恒成立。
而整型的取值范围比char的范围大,就不会出现这种情况。
还有一个方法,是把char改成无符号的类型unsigned char,即:
unsigned char a = 219;
其他不变,也可以的。

希望有用。

热心网友 时间:2023-10-15 10:32

char 类型在计算机中的存储长度为1字节,即8位,所以有符号的情况下只能表示 -128~127的,127+1的时候会自动变成-128啊! 无符号时 是 0~255。

热心网友 时间:2023-10-15 10:33

char 是八位的 int 是16位的 超过127发生溢出 所以死循环了

热心网友 时间:2023-10-15 10:33

因为char 从 -128 到 127
你可以用 unsigned char 就没这个问题了。 unsigned 的意思就是不要负数。

你的for 里面大概少了 {}

热心网友 时间:2023-10-15 10:34

char 类型有符号的情况下只能表示 -128~127.所以把127+1后 得到的不是128 而是一个负数!

热心网友 时间:2023-10-15 10:32

您好,

因为char类型的取值范围是-128~127。所以当自增到127之后,再加1得到的值不是128,而是溢出之后的-128。接下来按自增的话从-128一直加到127,又再次溢出变成-128。
换句话说,a<128恒成立。
而整型的取值范围比char的范围大,就不会出现这种情况。
还有一个方法,是把char改成无符号的类型unsigned char,即:
unsigned char a = 219;
其他不变,也可以的。

希望有用。

热心网友 时间:2023-10-15 10:32

char 类型在计算机中的存储长度为1字节,即8位,所以有符号的情况下只能表示 -128~127的,127+1的时候会自动变成-128啊! 无符号时 是 0~255。

热心网友 时间:2023-10-15 10:33

char 是八位的 int 是16位的 超过127发生溢出 所以死循环了

热心网友 时间:2023-10-15 10:33

因为char 从 -128 到 127
你可以用 unsigned char 就没这个问题了。 unsigned 的意思就是不要负数。

你的for 里面大概少了 {}

热心网友 时间:2023-10-15 10:34

char 类型有符号的情况下只能表示 -128~127.所以把127+1后 得到的不是128 而是一个负数!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com