扩展问题
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/

10-17 01:26