C语言表达式

一、表达式

在c语言中,由常量、变量、函数和运算符结合组成的式子称为表达式。

二、类型

类型:赋值表达式、算术表达式、关系表达式、逻辑表达式、位逻辑表达式、条件表达式、逗号表达式、复合表达式。

①:赋值表达式

1、变量赋初值形式 

类型说明符        变量名        =        常量;

类型说明符        变量名        =        表达式;

2.赋值运算符 

运算符实例等同于试一试
=x = 5x = 5试一试 »
+=x += 3x = x + 3试一试 »
-=x -= 3x = x - 3试一试 »
*=x *= 3x = x * 3试一试 »
/=x /= 3x = x / 3试一试 »
%=x %= 3x = x % 3试一试 »
  •  常量无法被赋值,所以不是所有表达式都可以作为左值。
  •  声明变量时可以直接为其赋值,也可以在声明变量后,再进行变量的赋值操作。
  • 赋值运算符满足右结合性

②:算术表达式

1、算术运算符

运算符名称描述实例试一试
+加法将两个值相加x + y试一试 »
-减法从另一个值中减去一个值x - y试一试 »
*乘法两个值相乘x * y试一试 »
/除法将一个值除以另一个x / y试一试 »
%模数返回除法余数x % y试一试 »
++增量将变量的值增加 1++x试一试 »
--递减将变量的值减1--x试一试 »
  • 单目运算符:符号为  +(正值运算符) 和  -(负值运算符)。
  • 双目运算符:符号为 + (加法运算符) 和 -(减法运算符)。

                        符号为 * (乘法运算符) 和 / (除法运算符)。

                        符号为% (取模或取余运算符)。

:取模定义为:a%b= a-(a/b)*b。

2、注意

  • 算术运算符单目运算符的优先级高于双目运算符,而*  /  %  的优先级高于 +  -(加、减)。 
  • 运算符的优先级别顺序执行时,可以用小括号()改变运算的优先级。
  • 算术运算符满足左结合性

③:自增/自减运算符

1.前缀

  • :++i;     /* 相当于i=i+1,i先执行自增1,再参加其他运算*/
  • :--i;       /* 相当于i=i-1,i先执行自减1,再参加其他运算*/

2.后缀

  • i++;     /* 相当于i=i+1,i先参与运算后,i再执行自增1*/
  • i--;     /* 相当于i=i-1,i先参与运算后,i再执行自减1*/

3.程序分析:
 

#include<stdio.h>
int main()
{
    int a,b,c,d;
    a = 100;
    b = 100;
    c = ++a;
    d = b++;
    printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
    /*输出结果为:
    a=101,b=101,c=101,d=100;
    ++a说明先执行自增a,然后再赋值给c。
    b++说明先将b赋值给d,然后再自增b。
    */
   

    a = 100;
    b = 100;
    c = --a;
    d = b--;
    printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
    /*输出结果为:
    a=99,b=99,c=99,d=100;
    --a说明先执行自减a,然后再赋值给c。
    b++说明先将b赋值给d,然后再自减b。
    */
    

    return 0;

}

④:关系运算符 

符号功能
>大于
<小于
>=大于或等于
<=小于或等于
==       等于
!=不等于

  • 关系运算符均是双目运算符
  • ">="和"<="只需要满足其一条件就成立。
  • "="和"=="是不同的,前者为赋值操作,后者是相等的意思。
  • 关系运算符的优先级高于赋值运算符。
  • 关系运算符具有左结合性(自左向右结合)

⑤:比较运算符

  • 比较运算符用于比较两个值。
  • 比较的返回值为真(1假(0)

1.程序分析

#include<stdio.h>
int main()
{
int x = 5;
int y = 3;
printf("%d", x > y); // 返回 1(true),因为 5 大于 3

return 0;
}

⑥:逻辑运算符

     a         b             a&&b          a||b       !a 
     0      0               0             0         1
     0      1               0             1         1
     1      0               0             1         0
      1      1               1             1         0

  • "||"、与"&&"、非"!" 。
  • 其中"||""&&"双目运算符,"!"单目运算符
  • "!"具有右结合性(右向左结合),"||""&&"具有左结合性(左向右结合)。

⑦:位逻辑运算符

符号功能
&按位与
按位或
^按位异或
~按位取反
<<左移
>>右移

  • 取反运算符"~"是单目运算符,其余均为双目运算符。

  • 这些运算符只能用于整型或者字符型数据。

  • 优先级从高到低:"~"  、 "<<" 、 ">>" 、 "&" 、"^" 、 "|" 。

  • "~" 右结合性,其余均为左结合性

  • 左移"<<"即乘以2的n次方。 右移">>"即是除以2的n次方。

  • 取反"~":   10: 0000 1010     ~10:1111 0101

⑧:逗号运算符

1、形式

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

  • 求解过程为先求解表达式1,再求解表达式2,一直求解表达式n,最终表达式的值即为表达式n的值。
  • 逗号表达式的优先级是所有运算符中最低的。 
  • a=2,5-1,4+3,6*9   //输出结果为2    a=(2,5-1,4+3,6*9 ) //输出结果为54                         这是因为前者有赋值运算符"="的存在,后者通过使用括号提升了逗号运算符的优先级。

⑨:复合赋值运算符

1、形式

变量名  复合赋值运算符  表达式 ;

等价于

变量名  =  变量名  双目运算符  表达式 ; 

2、复合赋值运算符

"+="   "-="   "*="   "\="   "%="   "<<="   ">>="   "&="   "^=" 

  • 满足右结合性

⑩:条件运算符

条件运算符也称为三目运算符,即它有三个运算符。

1、形式

表达式1? 表达式2 :表达式3 ;

 2、运算规则

如果表达式1的值为真,那么整个条件表达式的值就是表达式2的值,否则整个条件表达式的值就是表达式3的值。

3、注意

条件运算符的优先级高于赋值运算符,优先级低于关系运算符和算术运算符。

三、总结

1.优先级

从高到低:

①:逻辑非"!"

②:算术运算符

③:关系运算符        

④:"&&"和"||"

⑤:关系运算符

⑥:赋值运算符

⑦:逗号运算符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值