2016-12-02 2 views
0

Простой вопрос. У меня есть функция int function(void). Проводятся следующие утверждения:Каков правильный способ сравнения возврата функции

a. if(function() == somevalue) //somevalue is integer 
b. if((function()) == somevalue) 
c. if((ret = function()) == somevalue) //where ret is an integer 
+0

Конкретно. Очевидно, все они различаются. Какой конкретно вы используете, зависит от вашего конкретного случая. – Downvoter

+1

@Downvoter - Я предполагаю, что a & b функционально идентичны (и, вероятно, создадут точно такой же код во время компиляции) – KevinDTimm

+3

@KevinDTimm Я имел в виду лексическую разницу, но да, я бы согласился. Однако, в принципе, ОП должен сузить то, что он/она действительно хочет, потому что «тот же» - довольно широкий термин. – Downvoter

ответ

3

Все три из них функционально эквивалентны по сравнению с возвращаемым значением.

(a) и (b) эквивалентны, тогда как (c) позволяет сохранить возвращаемое значение от functionret), если потребуется позже. Если вам не понадобится возвращаемое значение function() позже для некоторых других целей, я бы рекомендовал использовать (a).

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