簡體   English   中英

最小值/最大值C中的短整數值

[英]Min/Max Value of a short int in C

問題已解決:它仍然無法在Code :: Blocks上工作,所以它與Codeblocks有關。

我遇到以下C代碼的問題。 它應該顯示“短整數”的最大/最小值。 我很確定它是對的,但它似乎不適用於我的機器。

作為輸出我只得到零而不是所需的+32767和-32768。

如果有人可以向我驗證它確實不是代碼中的問題,而是我的軟件有問題。

PS:我試過在其他人的機器上運行代碼,它在那里運行良好。

#include <stdio.h>

int main()
{

short int si=0;
short int si_pred=0;

while (si>=0) {
    si_pred=si;
    si++;

}
printf("%d lowest possible value for a short int.\n",si);
printf("%d highest possible value for a short int.\n",si_pred);
return 0;
}

你的while循環提前終止是因為你將si設置為0 ,而你的循環只會在si > 0時運行。 試試這個,因為你知道最大的int 應該至少為1:

short int si = 1;

現在你的循環不會短路,因為1 > 0

或者,更好的是,只需設置循環條件以檢查si >= 0

while(si >= 0) {
   si_pred = si;
   si++;
}

問題不是Code :: Blocks。 問題是有符號整數溢出的行為是未定義的 您不會從編譯器到編譯器獲得一致的結果,因為編譯器無需以任何特定方式處理有符號整數溢出。 無法保證向SHRT_MAX添加1將導致SHRT_MIN

正確的方法是在源代碼中包含“limits.h”並檢查SHRT_MINSHRT_MAX的值。

暫無
暫無

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

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