"将常量与布尔表达式进行比较始终为真"警告意味着什么?

The*_*ist 2 c

这个警告意味着什么(ij不是常量):

我一直试图谷歌这个,但它没有给我任何结果.

警告:常量10与布尔表达式的比较始终为真[-Wututological-constant-out-of-range-compare]

 if ((0<=i<=10)&&(0<=j<=10)){
Run Code Online (Sandbox Code Playgroud)

在我的程序,i并且j不是恒定值,他们做的改变.

Sou*_*osh 10

在这种情况下C,像这样的关系运算符链接不是有效的设计.从而,

 (0<=i<=10)
Run Code Online (Sandbox Code Playgroud)

没有做你认为它应该做的事情.它被评估为

((0<=i) <= 10 )
Run Code Online (Sandbox Code Playgroud)

这基本上都是

  • 0 < = 10,生产1(被认为是真值)
  • 1 < = 10,也产生1(被认为是真值)

遗憾的是,两者都远远超出预期的路径.

解决方案:你需要打破你的条件检查

 (0 <= i) && ( i<=10)
Run Code Online (Sandbox Code Playgroud)