【发布时间】:2016-12-05 16:19:36
【问题描述】:
我试过scanf("%u",&number) 并且我输入了负数问题是当我printf("%d",number) 得到负数时。我认为这会阻止我阅读负数。
scanf("%d",&number) 和 scanf("%u",&number) 真的是一回事吗?
还是只是为了便于阅读。
我是在做一些所谓的未定义行为吗?
编辑:
来自Wikipedia 我读到这个:
%u :扫描十进制无符号整数(请注意,在 C99 标准中 输入值减号是可选的,所以如果读取了减号,则没有 将出现错误,结果将是 a 的二进制补码 负数,可能是一个非常大的值。
阅读 SO 答案及以上内容有点令人困惑。谁能说的更清楚一点?
【问题讨论】:
-
stackoverflow.com/questions/5208641/… 看看这个链接。它应该回答你的问题。
-
@BlackBird 准确时间哈哈
-
这些都不合适,恕我直言。确切地说,问题出在有符号和无符号类型上。
-
请更新您的问题,向我们展示
number的声明。
标签: c printf scanf unsigned format-specifiers