我做了以下程序
#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
}
Run Code Online (Sandbox Code Playgroud)
现在在上面的程序中,如果输入4294967298Output Comes Out To Be Be 2,并且在stackoverflow上,答案是说,如果输入的数字超出要求的范围,scanf则将存储UINT_MAX并打印出来,这受该答案的启发,并进行了讨论这是错误的,等等。我自己尝试过,但是在进行模数运算后,它在打印范围后却没有这种表现。
如果可以指出标准对此有何评论,那将非常有帮助。
我读了另一个答案,关于该问题的两个答案都矛盾,没有人给出正确的答案,所选答案在该主题上有所不同。
是否依赖于实现?
许多人在这个问题上似乎有所不同,如果您能支持参考标准的论点,将不胜感激。
如果有人对此问题有任何疑问,请在评论中告诉我。