逻辑运算符在C语句中的return语句中

时间:2015-09-02 18:18:59

标签: c coding-style return logic

我最近一直在学习C,并且遇到了一些带有逻辑运算符的return语句,即

return(statement LOGIC statement);

当语句评估为True或false(即1或0)时,LOGIC是一个逻辑运算符,如&&,||等

这是一个很好的编码实践,因为对我来说似乎有点不对,使用if / else if语句会不会更好?

5 个答案:

答案 0 :(得分:10)

这种编码习惯没有错,实际上你不需要括号。小心懒惰的评价。

return foo1() && foo2()

如果对foo1的调用的返回值为false,则永远不会调用foo2

答案 1 :(得分:4)

省略if是好的编码风格。使用if cond return true else return false过长且多余。

答案 2 :(得分:4)

我宁愿做

return a && b;

int result = a && b;
return result;

只是因为没有机会搞砸了。如果你写

if ( a && b )
  return true;
else
  return false;

你总是冒着让考试错误的风险(即当你打算返回false时返回true,反之亦然)。这不是重要的风险,但它就在那里。

在C99为truefalse引入内置符号常量之前,人们通常会定义自己的TRUEFALSE宏。问题是,其中一些人偶尔会拼错01。我曾经花了一个下午追逐我的尾巴,因为有人在TRUEFALSE扩展到相同值时删除了标题。

并非巧合,那是我开始使用return expr而不是return TRUEreturn FALSE的时候。

答案 3 :(得分:0)

这取决于程序员。使用逻辑运算符并返回0或1感觉很舒服,而其他人可能感觉有点偏。

实际上,两者在工作方式上根本没有任何区别;而且我并不认为这是一个糟糕的编程习惯。

但是,ifelse可能具有更高的可读性,因此可以帮助读者。

答案 4 :(得分:0)

重要的是你的偏好。但是,查看复杂的解决方案并实施它们通常可以帮助您理解C上的复杂细节。一个简单的演示是:

if ($value | 1 === 1)

以上内容可以用复杂的方式重写:

 char mystring[10];
 //assume you take the input
 //to print it:
 int i;
 for(i=0;mystring[i]!='\0';i++)
 printf("%c",mystring[i]);

这精美地展示了如何评估指针的复杂细节。理解这一点并使用它肯定会显示并帮助您更好地理解C.

所以,不要忽视复杂的表示思维,我将使用自己的简化版本。