C语言深度剖析学习笔记-符号
来源:互联网 发布:欧莱雅抗衰老知乎 编辑:程序博客网 时间:2024/06/05 05:47
符号
注释
1. /* */ 预处理时,编译器会使用空格替换,所以:
in/*。。。*/t i = 0; // 是错误的, gcc -E 编译后变成 in t i = 0;
2. y = x / *p 不等于 y = x/*p,
因为编译器解析语法的时候,是从左到右,找最长的有意义的单元,对于第二段代码,编译器找到x后继续往后找,判断’x/’是否是合法的标识符或者关键字,发现不是,于是记录下’x’;
然后从’/’开始找,继续向下找,判断’/*’是否是有意义的符号,发现是,他是注释的开始,但不会停止,编译器继续往下找,判断’/*p’是不是有意义的符号,发现不是,于是记下’/*’;
再从’p’开始 …,
所以第二段语句是错误的,因为解析出来了’/*’但没解析出*/,无法配对,所以报错。
逻辑运算符
1. 存在短路现象:
int i = 0, j = 0;if ((++i > 0) || (++j > 0)) { printf("i = %d, j = %d", i, j);}// i = 1, j = 0
或(||)运算:从左到右,发现值大于0的条件后,后面的条件不会再计算;
与(&&)运算:从左到右,发现值等于0的条件后,后面的条件不会再计算。
位运算符
位运算:按位或(|)、按位与(&)、 按位取反(~)、 按位异或(^)、 左移(<<)、 右移(>>)
- << 左操作数的各个二进制为向左边移动右操作数个位值,高位丢弃,低位补零;
- >> 左操作数的各个二进制为向右边移动右操作数个位值,无符号数,高位补零,有符号数,高位补符号位的数值(正数为0,负数为1);
- << >> 的位数不能大于数据长度,不能小于0。
自增自减运算符
- 逗号表达式中,每一个”逗号(,)“,都表示一个计算单位的结束;
- for循环中,中间的条件表达式计算完成之后,表示一个计算单位结束;
- “分号(;)”表示一个计算单位结束。
int i = 1;int j = (i\++, i\++, i\++); // 逗号表达式,i每遇到一个逗号就认为本计算单元结束,自加int y;//每次y与10比较完,不管比较结果,Y就认为本计算单元结束,自加,不是{}里的算完就马上加。for ( y = 0; y < 10; y\++) { NULL;}i = 1;int k = (i\++) + (i\++) + (i\++); // i遇到;认为本次计算单元结束,把累积的三次自加全部执行一次,为6
计算单位结束后才会进行自增或者自减操作。
运算符优先级
1. 运算符优先级表
2. 运算符易错点
连接符
反斜杠(\)作为连接符时,后面不能有任何字符,即使空格也不行。
printf("This is \ perfect!\n");// 连接符后面不能加空格。// 连接符下一行中如果前面为了对齐使用了空格,空格会被当做有效字符。// 输出: This is perfect!
阅读全文
0 0
- C语言深度剖析学习笔记-符号
- 《C语言深度剖析》学习笔记----C语言中的符号
- <<C语言深度剖析>>学习笔记之三:符号
- c语言深度剖析之学习笔记(二)------------符号
- 【C】【笔记】《C语言深度剖析》第二章 符号
- 《C语言深度剖析》笔记 之 符号和预处理
- 《C语言深度剖析》学习笔记1
- 《c语言深度剖析》学习笔记2
- 《c语言深度剖析》学习笔记3
- 《c语言深度剖析》学习笔记4
- C语言深度剖析学习笔记
- C语言深度剖析学习笔记-预处理
- C语言深度剖析学习笔记-补码
- 《c语言深度剖析》整理--符号
- 《C语言深度剖析》学习笔记----C语言关键字
- 《c语言深度剖析》笔记
- 《C语言深度剖析》笔记
- 《C语言深度剖析》笔记
- java中的main函数
- 利用DiskFileItemFactory实现文件上传
- 数据库复习
- Linux(centos)系统各个目录的作用详解
- Caffe学习(1):UbuntunCaffe环境准备
- C语言深度剖析学习笔记-符号
- 199. Binary Tree Right Side View
- C++强制类型转换
- 文件夹路径
- kotlin 基本语法(四)
- 在Java中 用 switch 表示 区间
- 【设计模式】——抽象工厂
- C语言深度剖析学习笔记-预处理
- 【Linux】守护进程