这是一句空话。单个分号本身不执行任何操作。
在这种情况下,这意味着如果if 条件为真,则什么也不做。
如果没有else 部分,这段代码就没有多大用处。如果有,那么是否应该反转条件并且应该只包含一个非空的if 部分是一个风格问题。
在这种情况下,它是一个简单的条件,所以从风格上讲,最好将它反转,但是如果条件更复杂,那么这样写可能会更清楚。例如,这个:
if ((a==1) && (b==2) && (c==3) && (d==4)) {
;
} else {
// do something useful
}
可能比这更清楚:
if (!((a==1) && (b==2) && (c==3) && (d==4))) {
// do something useful
}
或者这个:
if ((a!=1) || (b!=2) || (c!=3) || (d!=4)) {
// do something useful
}
来自 cmets 的一个更好的例子(感谢 Ben):
if (not_found) {
;
} else {
// do something
}
对比:
if (!not_found) {
// do something
}
使用哪种方法很大程度上取决于要比较的确切内容、有多少项、项的嵌套程度,甚至涉及的变量/函数的名称。
您可能会使用此功能的另一个示例是,当您有一组 if..else 语句来检查一系列值并且您希望在代码中记录特定范围内不应发生任何事情时:
if (a < 0) {
process_negative(a);
} else if (a >=0 && a < 10) {
process_under_10(a);
} else if (a >=10 && a < 20) {
; // do nothing
} else if (a >=20 && a < 30) {
process_20s(a);
} else if (a >= 30) {
process_30s_and_up(a);
}
如果空的if 被遗漏,读者可能想知道那里是否应该发生某些事情而开发人员忘记了它。通过包含空的if,它对读者说“是的,我考虑到了这一点,在这种情况下不会发生任何事情”。
某些编码标准要求在代码中明确说明所有可能的结果。所以遵循这样一个标准的代码可能看起来像这样。