<分区>
我做了如下程序
#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
,在 stackoverflow 上,answers是说,如果您输入的数字超过要求的范围,那么 scanf
将存储 UINT_MAX
并打印它,受该答案的启发,正在进行的讨论是错误的等等。我自己尝试过,它的行为不是这样的,而是在执行模运算后打印的范围之后。
如果有人能指出标准对此有何说明,那将非常有帮助。
我已阅读其他answer ,并且该问题的两个答案相互矛盾,没有人给出正确的答案,所选答案因主题而异。
是否依赖于实现?
很多人似乎对这个问题持不同意见,如果您能引用标准来支持您的论点,我们将不胜感激。
如果有人发现这个问题有什么问题,请在评论中告诉我。