C和指针读书笔记——操作符和表达式
来源:互联网 发布:mac 搭建vps 编辑:程序博客网 时间:2024/04/28 17:59
1、C语言的算术操作符中只有%操作符要求两边都必须是整型数,其他操作符都是既适用于浮点类型又适用于整数类型;
2、C语言中的左移操作时,右边空出来的位均用0补齐,然而右移操作分为两类:逻辑右移和算术右移
逻辑右移是左边移入的位用0填充,算术移位是左边移入的位由原先该值的符号位决定的,符号位为1的移入的位均为1,符号位为0的移入的位均为0;
注:无符号值执行的所有移位操作就是逻辑移位,而有符号值的移位操作是取决于编译器;因此如果一个程序如果使用了有符号数的右移移位操作,它就是不可移植的;
应该避免下面类型的移位操作,这个移位的位数也是由编译器决定的
a << -53、C语言中位操作符要求操作数必须是整数类型;
4、关于位操作中的常用操作:
(1)置位:
value = value | 1 << bit_number;(2)清零:
value = value & ~(1 << bit_number);(3)测试:
value & 1 << bit_number;
5、赋值操作符的结合性是从右到左(求值的顺序),在使用赋值运算时应该考虑截短问题的存在;
6、使用复合赋值符能够使源代码更加容易阅读和书写;
7、sizeof是单目操作符而不是一个函数;
8、关于++操作符和--操作符的理解
关于前缀形式的++操作符和后缀形式的++操作符,在操作数之前的操作符在变量值被使用之前增加它的值,在操作数之后的操作符在变量值被使用后才增加它的值;
对于前缀和后缀形式的增值操作符都复制一份变量值的拷贝,用于周围表达式的值正是这份拷贝,因此这些操作符的结果不是被它们所修改的变量,而是变量值的拷贝,故它们不能像下面所示的形式进行操作:
a++ = 10;++a = 10;(a++和++a的结果都是a的拷贝,并不是变量的本身,因此无法进行赋值);
9、关系操作符产生的结果都是整型值;
10、在进行相等行测试比较时,要检查一下所书写的确实是双等号;
11、逻辑操作符&&与||的工作原理:&&操作符的左操作数总是首先进行求值,如果它的值为真,就对右操作数进行求值;如果左操作数的值为假,那么就不再对右操作数进行求值;同理对于||操作符,也是首先对左操作数进行求值,如果左操作数是真的,那么就不再对右操作数进行求值,这称为短路求值;
12、条件操作符能够产生更小的目标代码,从而提高效率;
13、逗号操作符能够使代码更加易于维护;
14、左值意味着一个位置,右值意味着一个值,在使用右值的地方也可以使用左值,但是在需要左值的地方不能使用右值;
15、求值的顺序问题:两个相邻操作符的执行顺序由它们的优先级决定,如果它们的优先级相同,那么它们的执行顺序由它们的结合性决定(优先级只对相邻操作符的执行顺序起作用);
16、C的整型算术运算总是至少以缺省整型类型的精度来进行的;
- C和指针读书笔记——操作符和表达式
- C和指针读书笔记——指针
- 《c和指针》摘录3—操作符合表达式
- C和指针读书笔记——基本概念
- C和指针读书笔记——数据
- C和指针读书笔记——语句
- C和指针读书笔记——函数
- C和指针读书笔记——数组
- C和指针读书笔记——使用结构和指针
- 《C和指针》第五章 操作符和表达式
- C和指针(2)语句、操作符和表达式
- 《C和指针》 读书笔记
- 《C和指针》读书笔记
- 《C和指针》读书笔记
- 读书笔记---C和指针
- C和指针读书笔记
- C和指针 读书笔记
- C和指针 - 读书笔记
- web项目中各种路径的获取
- 关于 Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
- C++ 新建文件夹
- (Python编程)一个简单的C扩展模块
- c++的thread类(c++线程简单用法)
- C和指针读书笔记——操作符和表达式
- VT值
- vc 坐标系统与影射模式
- Android更新ADT到R17以后,不能用第三方jar包了
- c#中ref与out
- 使用OpenCV官方提供文件配置、静态编译并运行OpenCV-2.3.x/2.4.x实例
- 【IOS】利用ASIHTTPRequest 实现一个简单的登陆验证
- pthread_create(linux下C语言多线程)
- UNIX Domain Socket IPC