C和指针(学习笔记)_第5章 操作符合表达式

       C被许多人诟病的一个缺点就是它品种繁多的操作符,同时也正是许多操作符具有其他语言的操作符无法抗衡的价值,这也是C适用于开发范围极广的应用程序的原因之一。

1.操作符

       1)算术操作符: +  -  *  /  %;

       2)移位操作符:左移位操作符<<,右移位操作符>>;

       3)位操作符:与(&)、或(|)、异或(^);

       4)赋值:复合赋值符 +=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=;

       5)单目操作符:!(取反)、++、-、&(取址符)、sizeof、~(取补)、--、+、*(间接访问符,与指针一起使用)、(类型,如(float)a);

       6)关系操作符:>、>=、<、<=、!=、==;

       7)逻辑操作符:&&、||;

       8)条件操作符:ex1 ? ex2 : ex3,条件操作符的优先级非常低;

       9)逗号操作符:ex1,ex2,......,exN;

       10)下标引用、函数调用和结构成员:a[N],s->a,s.a;

2.布尔值

        C并不具备显式的布尔类型,所以使用整型来代替。其规则是:零是假,任何非零值皆为真

3.左值和右值

        左值就是那些能够出现在赋值符号左边的东西,右值就是那些可以出现在赋值符号右边的东西。

4.表达式求值

        1)隐式类型转换:总是以缺省整型类型的精度来进行的。

        2)算术转换:long double,double,float,unsigned long int,long int,unsigned int,int;若某个操作数的类型在上面这个列表中排较低,那么它首先将转换为另一个操作数的类型然后执行操作。

        3)操作符的属性: 复杂表达式的求值顺序是由3个因素决定的:操作符的优先级、操作符的结合性以及操作符是否控制执行的顺序。

        4)优先级和求值的顺序:两个相邻操作符的符的执行顺序由它们的优先级决定,如果它们的优先级相同,它们的执行顺序由它们的结合性决定。除此之外,编译器可以自由决定使用任何顺序对表达式进行求值,只要它不违背逗号、&&、||和?:操作符所施加的限制。

5.警告的总结

        1)有符号值的右移位操作是不可移植的;

        2)移位操作的位数是负值;

        3)连续赋值中各个变量的长度不一;

        4)误用=而不是==进行比较;

        5)误用|代替||,误用&代替&&;

        6)在不同的用于表示布尔值的非零值之间进行比较;

        7)表达式赋值的位置并不决定表达式计算的精度;

        8)编写结果依赖于求值顺序的表达式;

6.编程提示的总结

        1)使用复合赋值符可以使程序更易于维护;

        2)使用条件操作符替代if语句以简化表达式;

        3)使用逗号操作符来消除多余代码;

        4)不要混用整型和布尔型值;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值