簡體   English   中英

C - 為什么向字符添加數字會重置為 255?

[英]C - Why does adding numbers to a char reset at 255?

我不確定如何自動解鎖超過 255 個字符。

char f;
f = 'k';
printf("%d\n", f);

結果在107 沒有驚喜。

f += 500;
printf("%d\n", f);

結果在95 似乎這已被模除以 255。

printf("%c\n", 607);

結果在_ 還有更多的字符可以擴展到數千個。 為什么添加一個值並使 char 超過 255 會強制進行模運算? 為了哈希函數,我需要超過 255。

char是內存中的一個字節。 所以你不能存儲大於 255 的值,因為它只有 8 位(假設在你的平台上一個 char 被定義為一個 8 位的字節)。 當該值大於 255 時,它會溢出。

此外,您不知道char是無符號的(值可以在 0 到 255 之間)還是有符號的(值可以在 -128 到 127 之間)。

如果要存儲大於 255 的值,可以使用char以外的其他類型。

char數據類型是一個8-bit字段,最大值為255 如果您希望處理大於 255 的數字,則需要使用16-bit值。

unsigned char的值范圍為0 to 255
signed char的值范圍為-128 to 127

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM