C if语句带&& - 首先执行哪个函数?

PJT*_*PJT 11 c if-statement

如果我在C中有一个if语句,它看起来像:

if( function1() > 0 && function2() > 0 ){

    //blah

}
Run Code Online (Sandbox Code Playgroud)

哪个函数将首先执行并始终按该顺序执行?

Mar*_*ers 27

function1()保证首先执行.

&&运营商是一个短路操作.function2()除非结果function1()大于零,否则甚至不会被调用.

从C99标准:

与按位二进制和运算符不同,&&运算符保证从左到右的评估; 在评估第一个操作数后有一个序列点.如果第一个操作数比较等于0,则不计算第二个操作数.