如果用户输入超出范围的值,我想结束我的主要功能。出于某种原因,这似乎不起作用。
fscanf(stdin, "%d", &T);
if(!(T >= 1 || T <=500)) exit(0);
这样做的最佳方式是什么?
答案 0 :(得分:2)
对于T
的任何值,T >= 1 || T <=500
变为true
。这是因为每个值都大于1
或小于500
。如果T
为0
,则其小于500
,如果T
为501
,则大于1
。这导致!(T >= 1 || T <=500
始终为false
。
试试这个
if( T < 1 || T > 500 ) exit(0);
或者您可以将逻辑更正为
if(!(T >= 1 && T <=500)) exit(0);
答案 1 :(得分:1)
让我们分发!
(德摩根定律),它应该更清楚原因:
if(!(T >= 1) && !(T <=500)) exit(0);
然后
if(T < 1 && T > 500) exit(0);
换句话说,这个条件永远不会得到满足。
你只想
if(T < 1 || T > 500)
答案 2 :(得分:0)
这可能是因为您输入的值介于1和500之间。尝试打印扫描值。
答案 3 :(得分:0)
尝试
if(T <= 1 || T >=500))
return 0;
为此你需要用整数返回值启动你的main函数,比如
int main() //instead of void main() or just main()