- #include <stdio.h>
- int main()
- {
- int x,y;
- x = 0;
- y = 1;
- if(x == 0)
- if(y == 0)
- printf("x == 0 && y == 0\n");
- else
- printf("x!=0\n");
- return 0;
- }
程序的本意是:若x==0,则进行判断y是否等于0;若x!=0,则输出x!=0。
所以当x=0,y=1时,程序应该不输出任何东西。
但是执行结果为:x!=0
导致这个问题的原因是:else始终与同一括号内最近的未匹配的if结合。
要想实现程序的本意,修改如下:
- #include <stdio.h>
- int main()
- {
- int x,y;
- x = 0;
- y = 1;
- if(x == 0)
- {
- if(y == 0)
- printf("x == 0 && y ==0\n");
- }
- else
- printf("x!=0\n");
- return 0;
- }
很多时候我们总是认为,当一个if嵌套另一个if且后面只跟一条语句的时候,没有必要加括号。但是上面的错误告诉我们,这并不是一个好的习惯,可能导致严重的错误。