读书人

II运算符有关问题

发布时间: 2012-10-19 16:53:36 作者: rapoo

II运算符问题
j是数组下标 如果j=-1;if(j==-1||t[j]<0);我感觉没有错误 因为如果条件j==-1成立 t【j】<0就不会执行 编译也通过 但是如果执行就会出现错误 请问t【j】可以嘛?我理解有问题嘛?

[解决办法]
你的理解没有问题,比如:
if(j == -1 || t[j] < 0)
{
printf("OK\n");
}
将会输出OK,应该是另外的地方有问题。
[解决办法]
但是如果执行就会出现错误,这里理解不对,或者表达错误。

应该是j == -1 不成立的话,t[j] < 0就执行。如果他们||为真就执行if语句里面的内容,为假就跳出if语句。
[解决办法]
Unlike the bitwise | operator, the || operator guarantees left-to-right evaluation; there is
a sequence point after the evaluation of the first operand. If the first operand compares
unequal to 0, the second operand is not evaluated.
[解决办法]

探讨
j是数组下标 如果j=-1;if(j==-1||t[j]<0);我感觉没有错误 因为如果条件j==-1成立 t【j】<0就不会执行 编译也通过 但是如果执行就会出现错误 请问t【j】可以嘛?我理解有问题嘛?

[解决办法]
||操作符就是这样的。比如:A || B,当A已经为真时,此时就不会去判断B是真还是假,当已经判断A为假时,此时采取判断B的情况。所以,楼主的理解是正确的。一下为测试代码:
C/C++ code
#include <iostream>using namespace std;int main(){    int a[10] = {};    int j = -1;    a[0] = -1;    if (j == -1 || a[j] < 0)    {        cout<<"OK!"<<endl;    }} 

读书人网 >C++

热点推荐