运算符与表达式(二)

一. 算术运算符——自增、自减运算符

(请见运算符与表达式一)

二. 关系运算符

用于比较运算,包括:>、<、==、>=、<=、!=

在if表达式中会用到关系运算符,请见下面实例:


1.      在if表达式中用了赋值运算符=,这种情况下编译器不会报错,打印出A! B!,在后续写代码中,可以把数值写在前面。

2.      在if表达式后加了分号,编译器不会报错,打印出A! B!,这种情况在代码数量较多的情况下很难发现错误,应该尽量避免。

3.      正确的写法,打印出B!。

4.      正确的写法,打印出B!,对比3,此例只有不满足if表达式时才会打印B!,而例三不管if表达式是什么,都会打印B!

三. 逻辑运算符——短路逻辑与、短路逻辑或

实例:


结果:i = 1,j = 0

原因是:&&是短路逻辑与

短路与:第一个表达式为0,不会再执行之后的表达式

短路或:第一个表达式为1,不会再执行之后的表达式

四. 位操作运算符

(请见运算符与表达式三)

五. 赋值运算符

用于赋值运算,分为简单复制(=)、复杂算术赋值(+=、-=、*=、/=、%=)、复合位运算赋值(&=、|=、^=、>>=、<<=)

六. 条件运算符

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

表达式1正确,结果为表达式2,否则为表达式3

七. 逗号运算符

在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。

例1:

inta1,a2,b=2,c=7,d=5;

a1=(++b,c--,d+3);

a2=++b,c--,d+3;

对于给a1赋值的代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是(d+3)的值,为8,所以a1的值为8。

对于给a2赋值的代码,也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=4(第2行代码运算完时,b=3,即第3行代码运行时,b的值为4)。

例2:inta[2],x=2,y=5;

a[0]=(x+3,y++,x++);那么最终结果是:a[0]=2x=3 y=6;

为何a[0]=2:因为(x++)是运算之后再自加

a[1]=(x++,x+3,x+7);那么最终结果是:a[1]=11,x=4

第一反应,我以为a[1]=10,就是3+7;其实是错的。

计算a[0]的时候,x++,此时x=3;计算a[1]的时候,x++,此时x=4,因此a[1]=4+7=11

不信你改成a[1]=(x++,x+7,x+3);调试一下,逗号表达试结果是7,就是4+3,说明经过一个逗号,x已经自加变成4了。

八. 指针运算符

用于取内容(*)和取地址(&)运算

九. 求字节运算符

sizeof(详情请见数据类型二)

十. 运算符优先级





同一优先级的运算符,运算次序由结合方向所决定,简单记就是:!>算术运算符>关系运算符>&&>||>赋值运算符

一般情况下,在不清除优先级的情况下,加上括号就可凸显优先级。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值