今天写作业的时候突然想到一个有趣的问题,如果说if语句中有三个判断条件(A||B||C)其中这三个条件互不相容,其中进行B,C的判定可能会报错,但是如果运行到A能够直接跳出,那么就不会报错。如果真是这样的话,那么编写判断条件时能省几条溢出的判断。
为了了解if语句判断时是如何工作的,因此随便写了个例子测试了一下。
#include<iostream>
using namespace std;
int main()
{
int* p = new int[2];
int *q = NULL;
p[0] = 1;
p[1] = 2;
int a = 0;
if ( a==0||*q == 0 )
cout << "只判断了第一项";
system("pause");
return 0;
}
这个时候,运行发现,程序运转正常,并没有进行条件B的判断
接下来修改两条语句的判断顺序
编译器直接报错了,个预期的一致。