簡體   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