Dan*_*elJ 3 c logic coding-style return
我最近一直在学习C,并且遇到了一些带有逻辑运算符的return语句,即
return(statement LOGIC statement);
Run Code Online (Sandbox Code Playgroud)
当语句评估为True或false(即1或0)时,LOGIC是一个逻辑运算符,如&&,|| 等等
这是一个很好的编码实践,因为对我来说似乎有点不对,使用if/else if语句会不会更好?
Man*_*dis 10
这种编码实践没有任何问题,实际上你不需要括号.小心懒惰的评价.
return foo1() && foo2()
如果调用的返回值为foo1false,则foo2永远不会被调用.
我宁愿做
return a && b;
Run Code Online (Sandbox Code Playgroud)
要么
int result = a && b;
return result;
Run Code Online (Sandbox Code Playgroud)
只是因为更少的机会搞砸了。如果你写
if ( a && b )
return true;
else
return false;
Run Code Online (Sandbox Code Playgroud)
您总是冒着使测试感产生错误的风险(即,false在您打算返回时返回true,反之亦然)。这不是很大的风险,但是确实存在。
在C99为true和引入内置符号常量之前false,人们通常定义自己的TRUE和FALSE宏。问题是,其中的一些人偶尔会误拼写0和1。我曾经花了一个下午追逐我的尾巴,因为有人在那里放了一个头TRUE并FALSE扩展到同样的值。
并非巧合的是,那是我开始使用return expr代替return TRUE或的时候return FALSE。