扩展问题
What happens if the first part of an if-structure is false?
用于C编程
if((NULL!=b)&&(query(&b)))
在上面的代码中,如果b=Null,将执行部分“query(&b)”吗?
编译器之间的行为是否一致?
最佳答案
不,C中的逻辑运算符将短路。
如果试图在a && b
为false时计算a
,则不计算b
。
但请记住,您不是用原始语句检查b
,而是检查a
还要注意,可以安全地获取一个为空的变量的地址,但不能取消对它的引用。
我想你应该写的是:
if ((b != NULL) && (query (*b)) ...
关于c - 在C中,如果第一个逻辑部分失败,是否执行if结构的第二部分?行为编译器是否受依赖?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22298159/