if、else
关于if、else语句,大家都觉得很简单吧?但是经常有人会栽在这上边,包括有多年经验的程序员也被坑过。
if(x==0)
if(y ==0 )error();
else
{
z = x+y;
}
这段代码作者本意是:
如果x等于0,再y也是0,就运行error();否则就不做任何处理。
如果x不等于0,程序将x与y之和给z;
而这段代码实际上与作者的意思相去甚远。原因在于C语言中,if始终与同一括号内最近的未匹配的if结合。上面这段代码正确缩进格式应该是:
if(x==0)
{
if(y ==0 )
error();
else
{
z = x+y;
}
}
如果要满足编程者的本意,应该改成:
if(x==0)
{
If(y==0)
error();
}
else
{
z = x + y ;
}
所以建议大家任何时候都不要偷懒少写{ }
关于{ }的风格也大致分成两派,将来会经常看到这两种格式的代码
一个是死命省格子派,缺点是看起来不整齐。
if(condition){
//code 1
}else{
//code 2
}
另一个是对齐强迫症派,每个花括号都要对齐在一条直线上。
if(condition)
{
//code 1
}
else
{
//code 2
}
C语言中的if、else陷阱及规范使用

463

被折叠的 条评论
为什么被折叠?



