-1
int reverseNumber(int x){
long k = x;
long result=0;
int negative=0;
if (k < 0)
{
negative = 1;
k = 0 - k;
}
while (k != 0)
{
result = (result * 10) +(k % 10);
k /= 10;
}
if (result >INT_MAX)
return 0;
else
{
if (negative == 1)
return (0-(int)result);
else
return (int)result;
}
}
這是用於反轉32位整數並檢查整數溢出條件的函數代碼。該代碼必須返回0以表示溢出情況,否則返回的數字。對於輸入2147483647(INT_MAX),我仍然得到輸出-1126087180,實際上它應該是零。請任何人都可以幫忙。 謝謝如何檢查c中的32位有符號整數的整數溢出
也許你可以存儲導致'int64_t'和使用口罩,檢查溢出 – sstefan
感謝u.it工作對我來說now.but什麼使用問題結果只要 –
「LONG_MAX」是否大於「INT_MAX」是實現定義的(就像「INT64_MAX」是否大於這兩個值一樣)。 – EOF