我在上面的程序做了如下程序如果輸入的數字超過C中數據類型的範圍,會發生什麼情況?
#include <stdio.h>
int main()
{
// Testing Number
unsigned int num;
printf("Enter The Number : ");
scanf("%u" , &num); // If I Enter 4294967298
printf("Your Number is : %u" , num); // Output Comes Out To Be 2
}
現在,如果進入4294967298
輸出出來是2
,這裏的計算器,answers是說,如果你輸入大於所要求的範圍更數則scanf
將存儲UINT_MAX
,並將打印該答案,並受到該答案的啓發,並進行討論,這是錯誤的。我嘗試了我自己,它不是像這樣的行爲,而是在模範算術之後打印範圍之後。
如果有人能指出標準對此的看法,那將會非常有幫助。
我已閱讀其他answer,這兩個問題的答案都是衝突的,沒有人給出正確答案,所選答案在主題上有所不同。
是否依賴於實現?
許多人在這個問題上似乎有所不同,如果你能夠參照標準支持你的觀點,那麼將會非常感激。
如果有人發現此問題有任何問題,請在評論中告訴我。
https://groups.google.com/forum/#!topic/comp.std.c/7mSxlJir4Eo發生了什麼; https://stackoverflow.com/questions/1694266/validate-max-integer-in-scanf代替做什麼。 – Ryan
@Ryan我不是在詢問驗證,我只是想知道會發生什麼 – CuriosGuy
@CuriosGuy:好的,請閱讀第一個鏈接。 – Ryan