2013-04-02 2 views
0

Я смотрю фрагмент кода, который вызывает две функции func1 (struct * ps) и func2 (struct ps). func1() возвращает результаты в struct, на которые указывает ps, который затем используется для вызова func2(). Так выглядит кодПорядок выполнения в выражении if

if(func1(&ps) && func2(ps)) 
{ 
<<do something>> 
} 

Это код C. Я уверен, что порядок, в котором вызываются func1() и func2(), зависит от компилятора. Но, по-прежнему нужно мнение экспертов. Благодарю.

+2

Нет, 'func1' всегда будет оценен первым, а' func2' будет оцениваться только в том случае, если 'func1' является истинным. – Tushar

ответ

2

Порядок здесь определяется как func1(&ps) выполняется до func2(ps). Оператор && имеет свойство, известное как короткое замыкание. Если левая сторона выполняет 0, то правая сторона никогда не будет выполняться. Следовательно, вам гарантируется, что func1(&ps) выполняет до func2(ps)

Смежные вопросы