发布网友 发布时间: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 而是一个负数!