C语言运算符与表达式

1.变量赋初值

1. 定义时直接赋值

        例如:int i = 10; 变量 i 初始化。

2. 先定义,后赋值

        例如:int i ; i = 10; 给变量 i 赋初值。

2.C语言算术运算符和算术表达式

1.C语言运算符有以下几类

  1. 算术运算符:包括加(+)、减(-)、乘(*)、除(/)、取余(%)。
  2. 关系运算符:用于比较两个操作数的大小关系,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)。
  3. 逻辑运算符:包括逻辑与(&&)、逻辑或(||)、逻辑非(!)。
  4. 位运算符:对操作数按位进行操作,如按位与(&)、按位或(|)、按位异或(^)、左移(<<)、右移(>>)。
  5. 赋值运算符:包括简单赋值(=)和复合赋值运算符(如 +=-=*=/= 等)。
  6. 条件运算符:也称为三目运算符(? :)。
  7. 逗号运算符:用逗号将多个表达式连接起来。
  8. 指针运算符:( * 和 & )
  9. 求字节数运算符:(sizeof)
  10. 强制类型转换运算符:((类型))

2.基本的算术运算符

  1. 加法运算符 + :用于两个数相加。

    • 例如:int a = 5 + 3; ,a 的值为 8 。
    • 对于浮点数也同样适用,如 float a = 2.5 + 1.5; ,a 的值为 4.0 。
  2. 减法运算符 - :实现两个数相减。

    • 比如:int a = 8 - 3; a 的值为 5 。
    • 也能用于负数的运算,如 int a = 3 - 8; ,a 的值为 -5 。
  3. 乘法运算符 * :执行两个数相乘。

    • 举例:int a = 4 * 6; ,a 的值为 24 。
  4. 除法运算符 / :

    • 当两个操作数都是整数时,结果为整数部分,舍去小数部分。例如:int a = 7 / 2; ,a的值为 3 。
    • 若操作数中有一个是浮点数,结果为浮点数。比如:float a= 7.0 / 2; ,a的值为 3.5 。
  5. 取模运算符 或求余运算符% :计算两个整数相除的余数。

    • 例如:int a= 9 % 4; ,a的值为 1 。
    • 求余%要求两边数据与整型相兼容,最终结果与左操作数有关。

 3.算术表达式和运算符的优先级与结合性

       在算术表达式中,运算符的优先级决定了它们执行的先后顺序。优先级较高的运算符会先被执行。

C 语言中算术运算符的优先级从高到低依次为:

  1. */% :这三个运算符具有相同的优先级,用于执行乘法、除法和取模(求余)运算。
  2. +- :用于执行加法和减法运算,它们的优先级低于乘、除、取模运算符。

例如,在表达式 a + b * c 中,由于乘法运算符 * 的优先级高于加法运算符 +,所以会先计算 b * c 的值,然后再将结果与 a 相加。

如果在一个运算对象两侧的运算符优先级相同,则按照运算符的结合性来确定运算顺序。算术运算符的结合性都是“自左向右”,即先左后右。例如,在表达式 a - b + c 中,先进行 a - b 的运算,然后再执行加 c 的运算。

以下是一个完整的 C 语言中运算符优先级和结合性的一览表:

优先级运算符名称或含义使用形式结合方向种类说明
1()数组下标数组名(常量表达式)从左到右特殊运算符
()圆括号(表达式)/函数名(形参表)
.成员选择(对象)对象.成员名
->成员选择(指针)对象指针->成员名
2-负号运算符-表达式从右到左单目运算符
(类型)强制类型转换(数据类型)表达式
++自增运算符++变量名/变量名++算术运算符,单目运算符
--自减运算符--变量名/变量名--单目运算符
*取值运算符*指针变量指针运算符,单目运算符
&取地址运算符&变量名单目运算符
!逻辑非运算符!表达式逻辑运算符,单目运算符
~按位取反运算符~表达式位操作运算符,单目运算符
sizeof长度运算符sizeof(表达式)求字节数运算符
3/表达式/表达式从左到右算术运算符,双目运算符
*表达式*表达式双目运算符
%余数(取模)整型表达式%整型表达式双目运算符
4+表达式+表达式从左到右双目运算符
-表达式-表达式双目运算符
5<<左移变量<<表达式从左到右位操作运算符,双目运算符
>>右移变量>>表达式双目运算符
6>大于表达式>表达式从左到右关系运算符,双目运算符
>=大于等于表达式>=表达式双目运算符
<小于表达式<表达式双目运算符
<=小于等于表达式<=表达式双目运算符
7==等于表达式==表达式从左到右双目运算符
!=不等于表达式!=表达式双目运算符
8&按位与表达式&表达式从左到右位操作运算符,双目运算符
9^按位异或表达式^表达式从左到右双目运算符
10``按位或表达式表达式从左到右双目运算符
11&&逻辑与表达式&&表达式从左到右逻辑运算符,双目运算符
12``逻辑或表达式表达式从左到右双目运算符
13?:条件运算符表达式1? 表达式2:表达式3从右到左条件运算符,三目运算符
14=赋值运算符变量=表达式从右到左赋值运算符
/=除后赋值变量/=表达式
*=乘后赋值变量*=表达式
%=取模后赋值变量%=表达式
+=加后赋值变量+=表达式
-=减后赋值变量-=表达式
<<=左移后赋值变量<<=表达式
>>=右移后赋值变量>>=表达式
&=按位与后赋值变量&=表达式
^=按位异或后赋值变量^=表达式
`=`按位或后赋值变量=表达式
15,逗号运算符表达式,表达式,…从左到右逗号运算符

4.强制类型转换运算符 

一般形式为 (类型名)(表达式)

类型名有:double,int,float等。

5.自增、自减运算符

自增运算符(++

  • 前置自增(++变量):先将变量的值增加 1,然后再使用变量的值进行其他运算。

展开过程

  • 后置自增(变量++):先使用变量当前的值进行其他运算,然后再将变量的值增加 1。

展开过程

自减运算符(--

  • 前置自减(--变量):先将变量的值减少 1,然后再使用变量的值进行其他运算。

展开过程

  • 后置自减(变量--):先使用变量当前的值进行其他运算,然后再将变量的值减少 1。

前置++/--效率高于后置++/--。 

3.不同数据类型间的混合运算

        不同类型的数据在进行混合运算时有一定的规则。例如,当进行+-*/运算的两个数中有一个数为floatdouble型,结果将是double型;如果int型与floatdouble型数据进行运算,会先把int型和float型数据转换为double型再进行运算;字符型数据与整型数据进行运算时,是把字符的 ASCII 代码与整数数据进行运算。

 4.赋值运算符和赋值表达式

在 C 语言中,赋值运算符为 = ,用于将一个值赋给一个变量。

赋值表达式的一般形式为:变量 = 表达式 。

例如:int num = 10; 这里将整数 10 赋值给变量 num 。

赋值运算符具有以下特点:

  1. 赋值运算符的左边必须是一个变量,不能是常量或表达式(可取地址)。

  2. 赋值运算的执行过程是将等号右边表达式的值计算出来,然后赋给左边的变量(不可取地址)。

  3. const + 变量(只读,但可取地址)

除了简单的赋值运算符 = ,还有复合赋值运算符,如 += 、 -= 、 *= 、 /= 、 %= 等。

混合赋值:
长装短里,舍掉高位;

短装长里,放在地位,高位符号位扩展(有符号),补0(无符号)。

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值