if常见问题解析
1. 空语句的问题
if (3>2);
等价于
if (3>2)
; //这是一个空语句
2.
if (表达式)
A;
else
B;
是正确的
if (表达式);
A;
else
B;
是错误的,这相当于if..;是一个语句,else..;是一个语句,而C语言中并没有else开头的语句
换言之:if..else必须配套使用,可以有if没有else,但是不能只有else没有if
3.
if(表达式1)
A;
else if(表达式2)
B;
else if(表达式3)
C;
else
D;
这是一个选择结构,只能四选一,即便表达式1和2都成立,也只会执行语句A
只要有一个条件成立且语句被执行,则后面的条件不再判断
4.
if(表达式1)
A;
else if(表达式2)
B;
else if(表达式3)
C;
这样写语法上没有错误,但是逻辑上会有漏洞
5.
if(表达式1)
A;
else if(表达式2)
B;
else if(表达式3)
C;
else (表达式4)
D;
这样写是不对的,要么就把(表达式4)去掉,要么就使用else if
6.
if(表达式1)
A;
else if(表达式2)
B;
else if(表达式3)
C;
else (表达式4);
D;
这样写语法上是不会出错的,但逻辑上是错误的
else (表达式4);
D;
等价于
else
(表达式4);
D;
/* 示例代码 if空语句问题 **
* 时间 2015-7-22 20:01 **/
# include <stdio.h>
int main()
{
if (3 > 2)
printf("aaaa\n");
if (1 > 2); //注意!!!这是一个空语句,对比去掉分号时的效果
printf("bbbb\n");
system("pause");
return 0;
}
/*
输出结果:
-------------------
aaaa
bbbb
请按任意键继续. . .
-------------------
*/
/* 示例代码 if..else if..else常见问题 **
* 时间 2015-7-22 20:05 **/
# include <stdio.h>
int main()
{
if (3 > 2)
printf("aaaa\n");
else if (4 > 2)
printf("bbbb\n");
else if (5 > 2)
printf("cccc\n");
else
printf("dddd\n");
system("pause");
return 0;
}
/*
输出结果:
-------------------
aaaa
请按任意键继续. . .
-------------------
结果分析:
if..else if..else结构是一个多选一的结构
只能当一个成立并且执行时后面的语句不再判
断,因此,设计时要注意好逻辑问题
*/
/* 示例代码 if语句常见问题 **
* 时间 2015-7-22 20:10 **/
# include <stdio.h>
int main()
{
if (3 > 2)
printf("aaaa\n");
else if (4 > 2)
printf("bbbb\n");
else if (5 > 2)
printf("cccc\n");
else (6 > 2)
printf("dddd\n");
system("pause");
return 0;
}
/*
输出结果:
------------------->>
Error 1 error C2146: syntax error : missing ';' before identifier 'printf'
------------------->>
*/
/* 示例代码 if语句常见问题 **
* 时间 2015-7-22 20:10 **/
# include <stdio.h>
int main()
{
if (3 > 2)
printf("aaaa\n");
else if (4 > 2)
printf("bbbb\n");
else if (5 > 2)
printf("cccc\n");
else (6 > 2); //加了分号之后(6 > 2);就是一个语句,但是没有实际意义
printf("dddd\n");
system("pause");
return 0;
}
/*
输出结果:
-------------------
aaaa
dddd
请按任意键继续. . .
-------------------
*/