C语言运算符与表达式

运算符是一种向变异程序说明一个特定的数学或逻辑运算的符号。主要有三大类:算术运算符、关系运算与逻辑运算符、按位运算符。除此之外,还有一些用于完成特殊任务的运算,如赋值运算符、条件运算符、逗号运算符等。C语言的运算符归纳如下:
(1)算术运算符“+”、“-”、“ * ”、“ / ”、“ % ”。
(2)关系运算符“>”、“<”、“==”、“>=“、”<=”、“!=”。
(3)逻辑运算符“!”、“&&”、“||”。
(4)位运算符“<<”、“>>”、“~”、“|”、“^”、“&”。
①:“按位与”运算符(&)全1为1,有0则0。0&0=0,1&0=0,1&1=1
②:“按位或”运算符(|)有1则1,全0则0。0|0=0,1|0=1, 1|1=1
③:“异或”运算符(^)相同为0,不同为1。0^0=0,1^0=1,1^1=0
(5)赋值运算符“=”及其扩展赋值运算符。
(6)条件运算符“?”、“:”。
(7)逗号运算符“,”。
(8)指针运算符“ * ”、“&”。
(9)求字节数运算符sizeof。
(10)强制类型转换运算符。
(11)分量运算符“ . ”和“—>”。
(12)下标运算符“ [ ] ”。
一、算术运算符与表达式
1.运算符
C语言基本的算术运算符共有5种:
+(加)、-(减)、*(乘)、/(除)、%(取余,模运算)
它们都是双目运算符,即运算符要求有两个操作数。
(1)要求%运算左右两数必须为整形数据,如7%4的值为3。
(2)两个整数相除,结果为整数,舍去小数部分。
(3)参加运算的两个数中有一个数为实数,则结果为double型,因为所有的实数都按double型进行运算。
(4)字符型数据可以和数值型数据混合运算。因为字符型数据在计算机内部是用一个字节的整形数表示的。
2.算术表达式
(1)算术表达式定义
用算术运算符和括号将运算对象连接起来,符合C语言规则的式子,称为算术表达式。运算对象包括常量、变量、函数等。
(2)运算符的优先级和结合性
和数学一样,C语言的算术表达式运算时,运算符是有优先级高低之分的,遵循的原则是“先乘除,后加减”。“%”运算与乘除处于同一优先级都高于加减。
若一个运算对象两侧的运算符优先级相同时,则按规定的“结合方向”处理,C语言规定运算符结合性为“自左至右”。
(3)类型转换
如果一个运算符两侧的数据类型不同,先自动进行类型转换,使两者具有同一类型,然后再进行运算。
(4)取负值运算符
C语言的取负值运算符是“-”(负号)。它是一元运算符,例如:
-X,-b
负值运算的优先级高于算术运算符的优先级。
(5)自增与自减运算符
C语言的自增运算符为“++”,自减运算符为“–”,其操作对象只能是变量。作用是使变量的值增1或减1,例如:
++i,–i(在使用i之前,i值先加(减)1)
i++ , i– (在使用i之后,i值再加(减)1)
(6)自增与自减运算符高于算术运算符优先级,与负值(-)运算符同级。
*例:i=2;
j=-i++;
“++”和“-”是同级优先关系。
按从右至左结合方向,表达式-i++相当于-(i++),计算顺序是:
①先计算表达式i++,表达式取i的值为2,然后变量i增1;
②2再做取负值运算,表达式的值为-2;
③将-2赋给变量j。
结果:j=-2,i=3。*
(7)运算符优先级关系和结合方向。
①从运算符的优先级来看,可描述如下:
(++,–,-,sizeof,!)>(,/,%)>(+,-)>(<<,>>)>(<,<=,>,>=)>(==,!=)>(&(按位与))>(^(按位异或))>(|(按位或))>(&&(逻辑与))>(||(逻辑或))>(?,:(条件运算))>(=,+=,-=,=,/=,%=,>>=,<<=,&=,^=,|=)>(,(逗号))
②几种主要运算符的结合方向
运算符 运算类别 结合方向
() 自左至右
++、–、- 单目运算 自右至左
*、/、% 双目运算 自左至右
+、- 双目运算 自左至右
<、<=、>=、==、!= 双目运算 自左至右
, 顺序求值 自左至右
二、赋值运算符与赋值表达式
(1).赋值运算符
C语言的赋值运算符为“==”,它的作用是将一个数据赋给一个变量。
(2).赋值表达式
①赋值表达式
<变量><赋值运算符><表达式>
赋值表达式当中的“表达式”,又可以是一个赋值表达式
②优先级
赋值运算符优先级低于算术运算符、关系运算符和逻辑运算符
③复合赋值运算符
x+=5————>x=x+5;
x*=y+8———->x=x*(y+8);
x%=3————>x=x%3;
a*=b————->a=a*b
复合赋值表达式:
<变量名><复合赋值运算符><表达式>
三、逗号运算符和求字节运算符
(1)、逗号运算符和逗号表达式
C语言提供一种特殊运算符——逗号运算符。用它将两个表达式连接起来,如a+b,a+c称为逗号表达式。逗号表达式的一般形式为:
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。
逗号表达式的一般形式可扩展为:
表达式1,表达式2,…,表达式n
它的值为表达式n的值。
(2)求字节运算符sizeof
C语言的sizeof是一个单目编译状态运算符,它返回变量或括号中的类型修饰字符的字节长度,一般形式为:
sizeof(变量名)
sizeof(类型名)
四、条件运算符
条件运算符要求有三个操作对象,称三目运算符。它由两个符号“?”和“:”组成,其一般形式为:
<表达式1>?<表达式2>:<表达式3>
它的运算顺序是先求表达式1的值,如果它的值为真(非0值),则求表达式2的值并把它作为整个表达式的值;如果表达式1的值为假(0假),则求表达式3的值冰把它作为整个表达式的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值