【发布时间】:2013-10-18 18:48:14
【问题描述】:
我必须在输入中获得一个 int 来验证它,我写道:
do {
scanf("%d", &myInt);
if (myInt >= 2147483648 || myInt <= -2147483648)
printf("I need an integer between -2147483647 and 2147483647: ");
} while (myInt >= 2147483648 || myInt <= -2147483648);
但如果我插入一个 char,它会以无限循环开始,但我会简单地验证 int 值。
【问题讨论】:
-
如果这些数字是 INT_MAX 和 INT_MIN,那 if 语句不会永远为真吗?
-
@CharlieBurns 我会这么认为。除非在 64 位
int架构上对 32 位限制进行硬编码(即 OP 使用 64 位int但需要 32 位限制),否则它似乎有点毫无意义。 -
@WhozCraig,我在想 。他有 = 所以 INT_MIN 和 INT_MAX 是正确的。尽管如此,我怀疑这就是他的想法。
标签: c validation io int scanf