stackoverflow朋友们,我在大学里一直在学习C语言。
在 stuyding 时,我开始好奇如果我使用许多if
结构而只有一个else
,就会出现技术错误。
例如:
if (condition 1)
if (condition 2)
if (condition 3)
if (condition 4)
else
在上面的情况下,我担心如果变量不符合第一个if
结构的条件, 它将"直接"转到其他,而不是第二个if
.
我的担忧是真的吗?还是永远不会发生?
提前谢谢你。
根据 C11 标准草案 6.8.4.1p3:
else
与词法上最接近的前if
相关联,即 语法允许。
也就是说,在嵌套的if
结构中,它将对应于最里面的if
("if (condition 4)
"(。
如果你想依次检查每个条件,找到匹配项,请使用
if (condition 1) {
} else if (condition 2) {
} else if (condition 3) {
} else if (condition 4) {
} else {
}
这实际上与:
if (condition 1) {
} else {
if (condition 2) {
} else {
if (condition 3) {
} else {
if (condition 4) {
} else {
}
}
}
}