我应该如何订购if语句
How should I order an if statement?
[我以为这个问题已经被问过了,但我找不到答案]。
在编写if
语句时,我将与进行比较的内容应该排在第一位还是第二位?(我特别好奇C / C++
和Java
)。
这很重要,还是只是风格?(惯例似乎是"变量第一,价值第二")。
考虑以下代码:
#include <iostream>
int main() {
int x = 5;
if ( 5 == x ) {
std::cout << "X == 5, true." << std::endl;
}
if ( x == 5 ) {
std::cout << "5 == X, true." << std::endl;
}
return 0;
}
输出:
X==5,正确
5==X,真。
所以没有出现有任何区别。有没有我遗漏的微妙之处?
这些被称为Yoda条件,据我所知,主要思想是防止意外赋值(即不能赋值给文本)。
是的,值得一提的是,像if (a = 5)
这样a
不是bool
的东西在Java等语言中是不允许的(尽管在C/C++中可以),但正如维基百科的文章所指出的,仍然可以防止不必要的行为:
它还可以解决某些类型的不安全null行为。
String myString = null;
if (myString.equals("foobar")) { /* ... */ }
// This causes a NullPointerException in Java
Yoda条件:
String myString = null;
if ("foobar".equals(myString)) { /* ... */ }
// This is false, as expected
将常量放在第一位(也称为"Yoda样式")可以防止由简单的打字错误引起的问题:
if (x = 5) // if (x == 5) was intended
仍然编译,但做了错误的事情(尽管大多数当前的编译器都会警告这个问题)。
if (5 = x) // if (5 == x) was intended
绝对不能对任何接近正常运行的编译器的东西进行编译。
没有,没有区别。没关系。做你喜欢做的事。就我个人而言:
x == 5
因为它读起来更好(或者我认为是这样)。5 == x
听起来不太对劲。但还是个人观点。
我想你会发现,大多数人做x == 5
是因为你在比较x
,而不是比较5
。
两者都很好。但当参数位于左侧时,这样做更容易被接受。示例:
if ( x == 5 )
不管怎样。没关系,做你喜欢的事,感觉更舒服。
在大多数情况下,您会发现常见的做法是将变量放在第一位,因为运算符==意味着赋值,而在这里您将值5赋值,所以只有将变量放第一位才有意义。
你的if语句应该是这样的:
if ( 5 == x ) {
std::cout << "X == 5, true." << std::endl;
}
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 我似乎对if/else的基本语句有问题:/
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 以在Qt中的IF语句中设置时间延迟
- Craps游戏问题,忽略if语句
- c++:定义if语句中的模板
- C++嵌套的 If 语句中,它无法按预期工作
- 如果中的多个语句是否与多个 if 相同?
- C++ If/Else 语句被跳过
- 使用语句if时逻辑的问题
- 如何添加语句if-else
- 如何将语句if(isalpha(c))从c++转换为MIPS ?
- 在if语句if C++中创建对象时出现作用域问题
- if语句-if/else和参数放置C++