我一直在努力理解为Z80微控制器编写的C代码。编码器是自学成才,不幸的是,代码缺乏风格和可读性。除了充满goto语句的代码之外,整个地方的间距和对齐也非常混乱。
我参加了一些IF ELSE声明如下:
if(value1==1){
code();
}
else
if(value2==1) {
othercode();
}
与以下内容相同:
1
if(value1==1){
code();
}
else if(value2==1) {
othercode();
}
或
2
if(value1==1){
code();
}
if(value2==1) {
othercode();
}
所以在我提交更改所有代码之前,我最好检查一下。
答案 0 :(得分:6)
代码1与原始代码完全相同。你刚刚更改了缩进。
代码2的行为与原始代码不同。
代码1表示如果value1 == 1
为真,则执行code()
否则检查value2 == 1
是否为真,然后执行othercode()
。
<强>虽然强>
代码2表示如果value1 == 1
为真,请执行code()
,然后检查value2 == 1
是否为真,然后执行othercode()
。
因此,简而言之,在第一种情况下,如果else
块的计算结果为true,则不会检查if
条件。在第二种情况下,将在所有情况下检查if
两个。
答案 1 :(得分:2)
前两个是相同的:
else
if(value2==1) {
othercode();
}
与:
相同else if(value2==1) {
othercode();
}
这是不同的:
if(value1==1){
code();
}
if(value2==1) {
othercode();
}
在前两种情况下,如果满足else
条件,控件将不会转到if
。但在最后一种情况下,它将始终检查两个if
语句。
答案 2 :(得分:1)
选项1等同于原始代码。
答案 3 :(得分:0)
if(value1==1){
code();
}
else if(value2==1) {
othercode();
}
这类似于您提供的代码
if(value1==1){
code();
}
else
//其他人会检查一个语句,现在下一个状态是if
,所以它类似于else if
if(value2==1) {
othercode();
}
答案 4 :(得分:0)
代码1与原始代码完全相同。