[英]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.