if 结构和三目运算和switch语句

if语句需要注意的地方:

if判断只能接一个语句,存在多个语句时,用块语句表示{},若在if判断后
直接加“;”相当于if判断后加一个空语句,即使条件成立什么也不会干!

1. if的第一种形态(真假)

如果表达式的值为真, 则执行其后的语句, 否则不执行该语句。

if(表达式)语句

void main()
{
    int a=1, b=2, c=3;
    if (a+b)c=4;
        printf("%d", c);
}
View Code
void main()
{
    int a=1, b=2, c=3;
    if (a<b);
        {           //养成良好习惯, 加上{}
            c=4;
        }
        printf("%d", c);
}

 

第二种形式为 if - else

if(表达式)
    语句1;
else
    语句2;
void main()
{
    int a=1, b=2;
    if (a>b)
        {
            printf("我比你大");
        }
    else
        {
            printf("我比你小");
        }
}

第三种形式 else if 多次判断

if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else if(表达式3)
    语句3
.。。。。
else
    语句;
void main()
{
    int a=8;
    if (a>10)
        {
            printf("值大于10");
        }
    else if (a == 10)
        {
            printf("值等于10");
        }
    else if (a == 10)
        {
            printf("值等于10");
        }
    else if (a == 8)
        {
            printf("要的就是你");
        }
    else
        {
            printf("我比你小");
        }
}

 三目运算

条件运算符为?和:, 他是一个三目运算符, 即有三个参与运算的量。

组成条件表达式的形式为:

条件1? 条件2: 条件3

如果条件1为真则执行条件2

如果条件1为假, 则执行条件3

void main()
{
    int a=4, b=3, c;
    if (a>b)
        c=a;
    else
        c=b;
        
}
#-----------------------------
void main()
{
    int a=4, b=3, c;
    c =(a>b)?a:b;
    printf("%d", c);
}

 

注意事项:

1).条件运算符的运算优先级低于关系运算符和算术运算符, 但高于赋值符:

max=(a>b):c:d

可以去掉括号而写成

max = a>b:c:d



2)条件运算符?和:是一对运算符, 不能单独分开使用



3)条件运算符的结合方向是自右向左。

例如:

a>b?a:c>d?c:d

可以理解为a>b?a:(c>d?c:d)

 

switch语句

c语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:

其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较, 当表达式的值

与某个常量表达式的值相等时, 即执行其后的语句, 然后不在进行判断, 继续执行后面

所有case后的语句。 如表达式的值与所有case后的常量表达式均不相同时, 

则执行default后的语句。

看例子:

void main()
{
    int a,b=1;
    printf("please input number: \n");
    scanf("%d", &a);
    switch(a)
    {
        case 1:printf("1111\n");
            {
               b = 3;
               printf("b = %d\n", b);
            }

        default: printf("bbbb %d\n", b);
    }

}

 

case 1:printf("1111\n");break;

还可以配合三目运算

switch (a>1?2:3)

 

注意事项:

1)在case后的各常量表达式的值不能相同, 否则会出现错误。

2)在case后, 允许有多个语句, 可以不用{}括起来

3)各case和default子句的先后顺序可以变动, 而不会影响程序执行结果

4)default子句可以省略不用。

 

posted @ 2017-03-28 21:33  我当道士那儿些年  阅读(1071)  评论(0编辑  收藏  举报