簡體   English   中英

我對輸出感到困惑。 所以我期待對我的輸出的解釋

[英]I'm confused with a output . So I'm expecting explaination For my output

  #include <stdio.h>
    {
        char num = 127;
        num = num + 1;
        printf("%d", num);
      return 0;
     }

輸出為:-128

編輯:我在發布這個問題時還是個新手。 哈哈 :)。

char是一個,在大多數系統上,需要 1 個字節(8 位)。 您的實現似乎有char表示有符號類型,但是在其他實現中它可能是無符號的。 有符號類型的最大值是 2^(n-1)-1,其中 n 是位數。 所以char的最大值為2^(8-1)-1=2^7-1=128-1=127。 最小值實際上是-2^(n-1)。 這意味着最小值為 -128。 當您添加超過最大值的內容時,它會溢出並循環回最小值。 因此,127+1=-128 如果你在做char算術。

你從不使用char進行算術運算。 請改用有signed charunsigned char 如果你用unsigned char替換你的char程序將按預期打印 128 。 請注意,溢出仍然可能發生(無符號類型的范圍從 0 到 2^n-1,因此如果將 1 加到 255,則無unsigned char溢出,結果為 0)。

暫無
暫無

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

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