C++ C++;?
前言 这个问题是指使用诸如C++ C++;?,c++,C++,前言 这个问题是指使用诸如if()。。。否则或类似。 答案旨在描述运行时的意外行为、语法缺陷和误解,如 这里不应该提到 解决的问题 对条件表达式的误解 相等比较使用==表示=是一个赋值,结果将作为对bool的强制转换进行评估。即,任何评估为!=0结果为真。作为预防机制,请考虑下面的表达式: 通过始终将常量放在表达式的左侧,可以避免错误使用赋值运算符。编译器将标记触发无效赋值错误的任何错误 变化:if(答案='y','y') 条件必须通过单独的比较进行测试。|操作符绑定不能实现
if()。。。否则
或类似。
答案旨在描述运行时的意外行为、语法缺陷和误解,如
这里不应该提到
解决的问题
-
相等比较使用
表示<代码>=是一个赋值,结果将作为对==
的强制转换进行评估。即,任何评估为bool
结果为!=0
。作为预防机制,请考虑下面的表达式:真
- 通过始终将常量放在表达式的左侧,可以避免错误使用赋值运算符。编译器将标记触发无效赋值错误的任何错误
-
变化:
if(答案='y','y')
条件必须通过单独的比较进行测试。
操作符绑定不能实现此处所期望的功能。改用|
if(答案==“y”|答案==“y”)
-
Python中的有效语法,在预期的行为中,语法在C++中有效,但解析为<代码>((0×x)< 42)<(代码> >所以<代码> false <代码> > />代码>真/ <代码>转换为<代码> 0 <代码> /<代码> 1 > /代码>,然后测试<代码> < 42 <代码> > >始终>代码>真< /COD>。 条件必须通过单独的比较进行测试:if(0
if(0
-
有多余的
在代码>
语句之后if()
-
代码相当于
if(mycondition) { statement1(); } statement2();
if(mycondition) { if (mycondition2) statement1(); else statement2(); }
statement2()代码>不在条件块的范围内。将
添加到组语句中{}
-
代码相当于
if(mycondition) { statement1(); } statement2();
if(mycondition) { if (mycondition2) statement1(); else statement2(); }
应用于上一个else
。添加if
:{}
if (mycondition) { if (mycondition2) statement1(); } else statement2();
这同样适用于任何错误放置的
代码>循环内语句,如
-
for(int x=0;x<5;++x);
// ^
{
//语句只执行一次
}
或
-
while(x<5);
// ^
{
//语句只执行一次
}
错误方向的潜在缺失else子句
{}的有趣位置,因为它们添加了它们,放错了它们,然后删除了错误的
if (a) {
}
if (b) {
}
if (c) {
}
遗漏其他内容,因为即使更多内容是真实的,也应该只做其中一项。一个好的编译器至少会对您能想到的任何事情发出警告。对于Stackoverflow.com来说,这不是一个好问题。我想我已经在CodeComplete2或其他地方读过类似的内容……虽然这个规范背后的思想非常好,但我认为它根本不能保证一个规范的dup。新手会因为打字错误而陷入其中。他们的问题是印刷问题。所以它应该作为一个整体关闭,这很好。问题是,如果他们的帖子是以重复的形式而不是“打字错误”关闭的,系统不会自动删除它。所以,我们将开始集体保留这些白噪声问题。@user0042-是的。除非你刚刚将他们的最低保留期从9天增加到30天,甚至一整年。
if(mycondition)
statement1();
statement2(); // Why this code is always executed ???
if(mycondition) {
statement1();
}
statement2();
if (mycondition)
if (mycondition2)
statement1();
else
statement2();
if(mycondition) {
if (mycondition2)
statement1();
else
statement2();
}
if (mycondition) {
if (mycondition2)
statement1();
}
else
statement2();
for(int x = 0;x < 5;++x);
// ^
{
// statements executed only once
}
while(x < 5);
// ^
{
// statements executed only once
}
if (north) {
} else if (south) {
} else if (west) {
} else if (east) {
}
if (a) {
}
if (b) {
}
if (c) {
}