我想检查我的整数值,如果它介于 - 20到+ 20之间,基于我想要进一步操作。如何通过循环检查?
for(int m=-20;m<=20;m++)
{
if(diff==m)
{
value=1;
}
}
这是对的吗?
答案 0 :(得分:5)
首先,定义“之间的”意味着。
真实的“之间”是模棱两可的。当你必须在两个人之间找到一个地方时,你可能不想坐在他们的脸上。当您参加他们在18至88岁之间宣传的派对时,他们的意思是包括18岁。
这是一项基本但安全至关重要的决定。不考虑这种情况的症状是最普遍的错误之一,即所谓的Off-by-one error。
这应该在程序员的工具箱中:在数学中,你可以用intervals来表达这四个案例:
[a..b]
&lt; - 包含a和b (a..b]
&lt; - a不包括在内,但是大于a且小于b的所有内容[a..b)
&lt; - b不包括在内,但是小于b且大于a的所有内容都是(a..b)
&lt; - a和b都不包括在内,但是大于a且小于b的所有内容都是语法从C派生的语言中的区间检查的规范实现如下:
if (x>=-20 && x<=20) {<code>} // if x in [-20..20], then do <code>
if (x>-20 && x<=20) {<code>} // if x in (-20..20], then do <code>
if (x>=-20 && x<20) {<code>} // if x in [-20..20), then do <code>
if (x>-20 && x<20) {<code>} // if x in (-20..20), then do <code>
这里,&&
是逻辑和运算符(我们之所以称之为,因为还有一个按位运算符)。它是logical conjunctions的C等效(和语法派生语言),如果两个操作数的值都为true
,则为true
。
在大多数C语法派生语言中,运算符&&
具有比比较运算符<=
,<
更低的所谓优先级, ==
,!=
,>
,>=
,所以是否将左操作数和操作数放在括号中&&
,即
x>=-20 && x<=20
vs.
(x>=-20) && (x<=20)
通常只是编码风格的问题。
答案 1 :(得分:2)
您不需要使用循环 - 只需一个if条件:
if((diff >= -20) && (diff <= 20)){
// do something
}
&&
是逻辑AND运算符 - 它连接多个条件,如果两个条件都已满,则表达式仅计算为true。
另见here
答案 2 :(得分:1)
你知道条件吗? C++
中最基本的条件分支是if语句。如果表达式evalutes为true(非零),则语句执行
if(m>=-20 && m<=20)
{
// stuff
}
语法:
if (expression)
statement
答案 3 :(得分:1)
是否有特定的理由检查循环内部?我的意思是,循环中是否还有其他处理?否则,我建议在&&
语句中查看if
运算符。
答案 4 :(得分:1)
假设整数是m
if(m>=-20 && m<=20)
{
value=1;
}
只有在条件足够的情况下才需要for循环。!!
答案 5 :(得分:1)
你可以这样做:
if( (m>= -20) && (m<=20))
{
//Do some thing.
}
无需循环播放。