1.C语言操作符优先级表

2.算术操作符中%(取模操作符)只适用于整型类型,其余几个操作符(+、-、*、/)既适用于整型类型也适用于浮点类型。当/操作符的两个操作数都是整型时,它执行整除运算,其它情况下则执行浮点数除法。

3.移位操作符包括左移位和右移位操作符,且只适用于整型类型。左移位时,值最左边的位被丢弃,右边多出来的空位则由0补齐。右移位时,值最右边的位被丢弃,左边移入的位由0填充(逻辑移位)或由原先该值的符号位填充(算术移位)。标准说明无符号值执行的所有移位操作都是逻辑移位,但对于有符号值则取决于编译器。而且,如果移位的位数比操作数的位数还要多,结果也是由编译器决定的。

4.位操作符对操作数的各个位执行&(与)、|(或)和^(异或)操作,只适用于整型类型。它可与移位操作符一起使用来设置整型值中的单个位,也可用来判断整型值中的单个位。

value |=  << bit_number;       //将指定位设置为1
value &= ~( << bit_number); //将指定位设置为0
value & << bit_number; //判断指定位是否为1

5.赋值操作符用一个等号表示,它把右操作数的值存储于左操作数指定的位置。赋值是表达式的一种,而不是某种类型的语句。赋值表达式的值就是左操作数的新值,它可以作为其他赋值操作符的操作数。

复合赋值符(+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=)的左操作数只求值一次。

6.单目操作符sizeof用来判断其操作数的类型长度,以字节为单位表示。其操作数既可以是个表达式(通常是个变量),也可以是两边加上括号的类型名。当操作数是数组名时,它返回该数组的长度。

注意:用sizeof来判断表达式的类型长度时,并不需要对表达式进行求值,所以sizeof(a=b+1)并没有向a赋任何值,只是单纯返回变量a的类型长度。

7.增值操作符(++)和减值操作符(--)的结果是变量值的拷贝,认识这一点非常重要。

8.逻辑操作符(&&、||)具有一个重要的特征:短路求值。即:如果&&操作符的左操作数为假,则右操作数不再求值;如果||操作符的左操作数为真,则右操作数不再求值。

9.逗号操作符将两个或多个表达式分隔开来,这些表达式自左向右逐个进行求值,整个逗号表达式的值就是最后那个表达式的值。

注意:在使用逗号表达式之前,你要问问自己它能否让程序在某些方面表现更出色。如果答案是否定的,你就不要使用它。顺便说一下,“更出色”并不包括“更炫”、“更酷”或“令人印象更深刻”。

10.左值意味着一个位置,右值意味着一个值。

11.C的整型算术运算总是至少以缺省整型类型的精度来进行的,为了获得这个精度,表达式中的字符型和短整型操作数在使用之前被转换为普通类型,这种转换称为整型提升。如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数转换为另外一个操作数的类型,否则操作就无法进行。

寻常算术转换的顺序为:int -> unsigned int -> long int -> unsigned long int -> float -> double -> long double。

当整型值转换为float型值(标准规定仅要求6位数字的精度)时,也有可能损失精度。当float型值转换为整型值时,小部分被舍弃。如果浮点数的值过于庞大,无法容纳于整型值中,那么其结果是未定义的。

12.复杂表达式的求值顺序由3个因素决定:操作符的优先级、操作符的结合性以及操作符是否控制执行的顺序。其规则为:两个相邻操作符的执行顺序由它们的优先级决定。如果它们的优先级相同,它们的执行顺序由它们的结合性决定。除此之外,编译器可以自由决定使用任何顺序对表达式进行求值,只要它不违背逗号、&&、||和?:操作符所施加的限制。

《Pointers On C》读书笔记(第五章 操作符和表达式)的更多相关文章

  1. 《C和指针》读书笔记——第五章 操作符和表达式

    1.当/操作符的两个操作数都是整数时,它执行整除运算:其他都是执行浮点数除法. 2.逻辑移位:左边移入的位用0填充: 算数移位:左边移入的位用符号位填充: 3.位置1 :value |= 1<& ...

  2. 《C和指针》读书笔记 第5章-操作符和表达式

    原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936503.html

  3. 《Linux内核设计与实现》第四周读书笔记——第五章

    <Linux内核设计与实现>第四周读书笔记--第五章 20135301张忻 估算学习时间:共1.5小时 读书:1.0 代码:0 作业:0 博客:0.5 实际学习时间:共2.0小时 读书:1 ...

  4. 《Linux内核设计与实现》读书笔记——第五章

    <Linux内核设计与实现>读书笔记--第五章 标签(空格分隔): 20135321余佳源 第五章 系统调用 操作系统中,内核提供了用户进程与内核进行交互的一组接口.这些接口让应用程序受限 ...

  5. 深入理解 C 指针阅读笔记 -- 第五章

    Chapter5.h #ifndef __CHAPTER_5_ #define __CHAPTER_5_ /*<深入理解C指针>学习笔记 -- 第五章*/ /*不应该改动的字符串就应该用 ...

  6. 《Linux内核设计与实现》读书笔记 第五章 系统调用

    第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种 ...

  7. Getting Started With Hazelcast 读书笔记(第五章,第六章)

    第五章 监听 本章应该是Hazelcast的核心机制了,Hazelcast通过注册各种监听器获悉集群中其他应用对数据的修改,成员的加入,退出等. 分为3个层次. 1.EntryListener(对数据 ...

  8. 《linux内核设计与实现》读书笔记第五章——系统调用

    第5章 系统调用 操作系统提供接口主要是为了保证系统稳定可靠,避免应用程序恣意妄行. 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层. 该层主要作用有三个: 为用户空间提供了 ...

  9. 深入Java虚拟机读书笔记第五章Java虚拟机

    Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...

随机推荐

  1. EassyMock实践 捕获参数

    在测试接口过程中,有时我们希望知道自己期望传入的参数是什么,以此来判断传入参数的正确行,这时就需要用到EassyMock的capture方法.该方法能捕获传入的参数存放到自定义的变量中,然后用捕获的参 ...

  2. Programming C#.Inheritance and Polymorphism

    继承 C#中,创建派生类要在派生类的名字后面加上冒号,后面再跟上基类的名字: public class ListBox : Control 提示:C++程序员注意了,C#没有私有或者保护继承 多态 继 ...

  3. JVM学习之对象的状态

    堆中存放着几乎所有的对象实例,垃圾收集器在堆堆进行回收前,首先要确定这些对象哪些还“活着”,哪些已经“死去”.方法有如下两种: (1)引用计数法 算法思想:为对象添加一个引用计数器,每当有一个地方引用 ...

  4. JavaWeb核心编程之(三.4)Servlet Context 配置

    ServletContextServlet引擎为每个Web应用程序都创建一个对应的ServletContext对象, ServletContext对象被包含在ServletConfig对象中, 调用S ...

  5. 纯CSS 贴底部的布局(兼容各个浏览器包括IE6)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  6. 使用jQuery出现the function undefined

    出现function undefined往往是相关的JS文件没有导入导致,在相关文件都导入的情况下,使用jQuery提供的方法还会出现function undefined错误,或许就是jQuery对象 ...

  7. EditText 默认不获取焦点,弹出软键盘布局变形解决方案

    关于弹出软键盘布局变形解决方案: 在androidMainfest.xml文件中在此Activity中写入 android:windowSoftInputMode="adjustPan&qu ...

  8. php 输出带变量字符串

    (一) <?php $a=50;echo "Hello World 我有"."$a"."元";?> 看此例子,变量a的输出,在p ...

  9. [转]struct 用法深入探索

    struct用法深入探索 作者: Cloudward 1. struct的巨大作用 面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估.因为一个大型 ...

  10. 【Chromium中文文档】Profile架构(看看谷歌家的重构)

    进程模型 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Profile_ ...