如何在c ++中检查整数是否介于-20到+20之间

时间:2013-12-10 08:30:28

标签: c++

我想检查我的整数值,如果它介于 - 20到+ 20之间,基于我想要进一步操作。如何通过循环检查?

   for(int m=-20;m<=20;m++)
          {
              if(diff==m)

              {
                value=1; 
              }

          }

这是对的吗?

6 个答案:

答案 0 :(得分:5)

之间?那是什么?

首先,定义“之间的”意味着

  • 这是否意味着-20有效还是无效?
  • 是否包含或排除了20个?

真实的“之间”是模棱两可的。当你必须在两个人之间找到一个地方时,你可能不想坐在他们的脸上。当您参加他们在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.
}

无需循环播放。