02. 表达式

表达式

 

一、算数表达式

C语言中,算数运算符是:+(加)、-(减)、*(乘)、/(除)、

(以上运算符的运算对象可以是整型,也可以是实型)

%(求余)%号左右两端被除数和除数必须是整数)

 

 

二、强制类型转换表达式

形式如下:

(类型名)(表达式)

 

代码:

#include<stdio.h>

int main()

{
    double x;
    int a = 8, b = 5;

    x = (double)a/b;

    printf("%f\n", x);

    return 0;

}

 

 

三、赋值表达式

形式如下:

变量名=表达式

(赋值号左边必须是变量名)

例如:n = 1

在赋值运算符前加上其他运算符可以构成复合赋值运算符,其优先级与赋值运算符的优先级相同

例如: n = n + 1

 

赋值表达式语法:

1、= 左边只能出现一个变量,不能出现多个变量、常量、表达式★★★★

2、= 右边可以出现一个或多个变量,常量,表达式

3、赋值表达式的值等于 = 号左边第一个变量的值★★★★★

 

 

四、自加++、自减--运算符

1、++运算符的运算规则

 x++(++放x后):

x自增1 表达式(x++)的值等于x自增以前的值(加加放后,自增前)

例如:x++ 且 x = 7 等价于 x = x + 1  故 x == 8   (x++)== 7

++x(++放x前):

x自增1 表达式(x++)的值等于x自增以后的值(加加放前,自增后)

例如:++x 且 x = 7 等价于 x = x + 1  故 x== 8   (++x)== 8

 

2、--运算符的运算规则

 x--(--放x后):

x自减1 表达式(x--)的值等于x自减以前的值(减减放后,自减前)

例如:x-- 且 x = 7 等价于 x = x - 1  故 x ==6   (x--)== 7

--x(--放x前):

x自减1 表达式(x--)的值等于x自减以后的值(减减放前,自减后)

例如:--x 且 x = 7 等价于 x = x - 1  故 x == 6   (--x)== 6

 

 

五、逗号表达式

★★

“,”是C语言提供的一种特殊运算符,用逗号将表达式链接起来的式子称为逗号表达式。

形式如下:

  表达式1,表达式2,表达式3 ……,表达式n

说明:

1、逗号运算符的结合性为从左到右,因此逗号表达式将从左到右进行运算。即,先计算表达式1,然后计算表达式2,依次进行,最后计算表达式n。

逗号表达式的值为最后一个表达式的值。

2、在所有运算符中,逗号表达式的优先级最低。

 

代码:

#include<stdio.h>

int main()
{
    int x = 1, y = 5, z = 8, k;

    k = (y = -x++, y++, z--);

    printf("%d %d %d %d\n", x, y, z, k);

    return 0;

}

 

 

六、关系表达式

注意:0关系不成立,1关系成立

C语言中提供了6种关系运算符

1、<  (小于)       

2、<=  (小于或等于)

3、>  (大于)       

4、>=  (大于或等于)

5、== (等于)    

6、!=  (不等于)

 

 

七、逻辑表达式

C语言中提供了三种逻辑运算符:

1、&& 逻辑 “与”  

2、|| 逻辑 “或” 

3、! 逻辑 “非”

注意:C语言中,由 && 或 || 构成的逻辑表达式,在特定的情况下会产生“短路”现象。

 

逻辑运算(T为真,F为假):

与 &&:(T&&T=T、T&&F=F、F&&T=F、F&&F=F)

或 ||(T||T=T、T||F=T、F||T=T、F||F=F)

非 !:(!T=F、!F=T)

 

★★★

&& 的短路:

当 && 左边有表达式的值为F(0)时,则发生短路,不再计算&&右边的其它表达式。

 

代码:

#include<stdio.h>

int main()
{
    int score;

    scanf("%d", &score);

    if(score<60)
    {
        printf("不合格\n");
    }
    if(score>=90)
    {
        printf("优秀\n");
    }
    if(score>=60 && score<90)
    {
        printf("合格\n");
    }

    return 0;

}



 

|| 的短路:

当 || 左边有表达式的值为T(非0)时,则发生短路,不再计算 || 右边的其它表达式。

 

代码:

#include<stdio.h>

int main()
{
    int x = 0, y = 1;

    if(++x || y++)      // x==1  ++x==1   短路
    {
        x += 2;
    }

    printf("%d %d\n", x, y);   // x==3,y==1

    return 0;

}

 

例如:a++ && b++

若a的值为0,表达式首先去求a++的值,由于表达式a++的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过b++不再对它进行求值。所以a的值将自增1,由0变成1而b值不变。若a的值不为0则系统不能仅根据表达式a++的值来确定逻辑表达式的运算结果,因此必然要再对运算符&&右边的表达式进行求值,这时将进行b++的运算,使b值改变。

 

例如:a++ || b++

若a的值为1,表达式首先去求a++的值,由于表达式a++的值为1,系统完全可以确定逻辑表达式的运算结果总是为1,因此将跳过b++不再对它进行求值。所以a的值将自增1,而b值不变。若a的值为0则系统不能仅根据表达式a++的值来确定逻辑表达式的运算结果,因此必然要再对运算符||右边的表达式b++进行求值,这时将进行b++的运算,运算结果不仅使a的值改变,也改变了b的值。

 

注意:60<=score<90 等价于 (60<=score)<90

 

优先级:

算术运算符 关系运算符 逻辑运算符 赋值表达式 逗号表达式

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值