繁体   English   中英

无符号字符范围是 0 到 255

[英]Unsigned char range is 0 to 255

#include <iostream> 
using namespace std; 
int main() 
{ 
    unsigned char counter = 0; 
    for (counter = 0; counter <= 255; counter++) { 
        printf("%d ", counter); 
    } 
    return 0; 
} 

正确的 Output 是无限循环但我认为 output 是 0,1,...255,因为无符号字符的范围从 0 到 255。当计数器变为 256 时,只有它超出范围。 但这里我们的条件是计数器 <=255 请清除我的疑问

将 unsigned char 视为一个字节:0 -> 0b00000000 1 -> 0b00000001... 255 -> 0b11111111

然后下一个数字是 0,因为你不能有第 9 位。 所以在 0b11111111 之后是 0b00000000。

这就是为什么它是一个无限循环,它永远不会达到 256,并且总是保持在 0 到 255 之间。

这将导致无限循环,因为if循环中的条件(counter <= 255)始终为true

这种情况不可能为false :变量counter不能包含高于 255 的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM