一、if语句
if表达式的形式:
1、if(表达式)
语句1;
else
语句2;
2、if(表达式1)
语句1;
else if (表达式2)
语句2;
else if (表达式3)
语句3;
...
else 语句n;
如下面程序,当x<1时,y=-1;当x=0时,y=0;当x>1时,y=1;
#include <stdio.h> int main(void) { int x; int y; printf("Please input x:"); scanf("%d",&x); if(x == 0) { y = 0; printf("x = %d,y = %d\n",x,y); } else { y = x > 0 ? 1 : -1; printf("x = %d,y = %d\n",x,y); } return 0; }
注:if后面的表达式有两种,一般为逻辑表达式或关系表达式。
eg:if(a ==b && x == y) //if语句后没标点符号
printf(“a = b,x = y”);
在if语句中,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值时, 可以用一个条件运算符来处理。
二、条件运算符
条件表达式的一般形式为
表达式1 ? 表达式2 : 表达式3;
执行顺序:先求解表达式1,若其为1(真),则求解表达式2,解得的结果作为整个条件表达式的值。若其为0(假),则求解表达式3,解得的结果作为整个条件表达式的值。
eg:max = (a > b) ? a : b; //当a>b时,将a赋给max。当a<b时,将b赋给max。
a > b ? (a = 10): (b = 2); // a>b时,输出a = 10;a<b时,输出a = 2;
表达式2、3不仅可以是数值表达式,还可以是赋值表达式或函数表达式。
上面的if程序可以用如下程序代替:
#include <stdio.h> int main(void) { int x; int y; printf("Please input x:"); scanf("%d",&x); y = x > 0 ? 1 : (x < 0 ? -1 : 0);//若x>0,y=1;否则y=x < 0 ? -1 : 0;后面这个还是条件语句,当x<0,y=-1;否则y=0; printf("x = %d,y = %d\n",x,y); return 0; }
三、switch语句
switch语句为多分支选择语句,可直接处理多分支选择。
一般形式:
switch (表达式) { case常量表达式1: 语句1; case常量表达式2: 语句2; ... case常量表达式n: 语句n; default: 语句n+1; }
eg:
#include <stdio.h>
int main(void)
{
int a;
int b;
char c;
printf("please input a:");
scanf("%d",&a);
getchar();
printf("please input operator:");
scanf("%c",&c);
printf("please input b:");
scanf("%d",&b);
switch (c)
{
case '+':
printf("a + b = %d\n",a + b ); break;
case '-':
printf("a - b = %d\n",a - b ); break;
case '*':
printf("a * b = %d\n",a * b ); break;
case '/':
switch (b)
{
case 0:
printf("error\n"); break;
default:
printf("a / b = %d\n",a / b );
} break; //switch中可以嵌套switch语句,要注意在最后加break。
default:
printf("error\n");
}
return 0;
}
说明:
(1)switch后面括号里的“表达式”,ANSI标准允许它可以是任何类型。
(2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句。若所有case后面的值没有与switch表达式里的值相匹配,就执行default后面的语句。
(3)每个case常量表达式的值必须互不相同。
(4)各case与default的出现顺序对执行结果没有影响
(5)case后面如果没有“break;”的话,执行完一个case后面的语句后,流程控制会顺序执行下面的case,不再进行判断。加上break 后,程序执行完该case后,会跳出switch的复合语句块。
注:什么时候用if什么时候用switch?
当条件很复杂,一个条件中有&&、||、!等存在时,用if语句。
若条件简单,分支多时,可以用switch语句。