注释符号
2018年12月12日
19:49
1、编译器在剔除注释时,不是简单的剔除,而是用空格代替原来的注释
所以:int /* */i; 不会被解析为inti,所以这语句是对的
2、当在双引号之中使用注释符号的时候,注释符号会被当成字符串常量中的一部分
3、如果写注释时不想用/**/,又需要写不止一行,可以在//后的每一行末尾用接续符'\'
4、/**/之间不能嵌套
因为/*总会与离他最近的*/匹配
5、y = x/*p;是不对的
本意是想求x除以p指向地址中的值,但按照上面的写法,/*后面的部分就直接被注释掉了,而且后面还找不到*/,所以会报错
规则:对于全局数据(全局变量、常量字符等)必须要加注释;
当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读
数值的单位一定要注释
对变量的范围给出注释,尤其是参数
对一系列的数字编号给出注释,尤其是编写底层驱动程序的时候(比如引脚编号)
对于函数的入口/出口数据,条件语句,分支语句给出注释
复杂的函数中,在分支语句,循环语句结束之后需要适当的注释,方便区分各分支或循环体
++,--
2018年12月12日
20:10
后缀运算是在本计算单位计算结束之后再进行自加或自减运算
前缀运算则相反
c语言运算符的优先级
2018年12月12日
20:11
优先级 | 运算符 | 含义 |
1 | [] | 数组下标 |
| () | 圆括号 |
| . | 成员选择(对象) |
| -> | 成员选择(指针) |
2 | - | 符号 |
| (类型) | 强制类型转换 |
| ++ | 自增运算符 |
| -- | 自减运算符 |
| *(指针变量) | 取值运算符 |
| & | 取地址运算符 |
| ! | 逻辑非运算符 |
| ~ | 按位取反运算符 |
| sizeof | 长度运算符 |
3 | / | 除 |
| * | 乘 |
| % | 取余 |
4 | + | 加 |
| - | 减 |
5 | << | 左移 |
| >> | 右移 |
6 | > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
7 | == | 等于 |
| != | 不等于 |
8 | & | 按位与 |
9 | ^ | 按位异或 |
10 | | | 按位或 |
11 | && | 逻辑与 |
12 | || | 逻辑或 |
13 | ?: | 条件运算符 |
14 | = | 赋值 |
| /= |
|
| *= |
|
| %= |
|
| += |
|
| -= |
|
| <<= |
|
| >>= |
|
| &= |
|
| ^= |
|
| |= |
|
15 | , | 逗号运算符
|
预处理
2018年12月12日
20:40
ANSI标准c还定义了如下几个宏:
_LINE_ 表示正在编译的文件的行号
_FILE_ 表示正在编译的文件的名字
_DATE_ 表示编译时的日期字符串
_TIME_ 表示编译时的时间字符串
_STDC_ 判断该文件是不是定义成标准c程序
宏定义
2018年12月12日
20:44
#define 宏定义可出现在代码的任何地方,作用域为宏定义行之后
可以把任何东西定义为宏。
编译器会在预编译时用真实值代替宏
例:#define PI 3.141592654
在程序代码中,从本行之后的代码都可以用PI代表3.141592654,在预编译的时候替换回来
规则:1、函数宏的调用不能缺少参数,如果此函数宏有参数的话
2、传递给函数宏的参数不能包含看似预处理指令的标记
3、在定义函数宏的时候,每个参数实例都应该以小括号括起来,除非他们作为#或##的操作数
4、defined预处理操作符只能使用两个标准形式之一:
defined (identifier)
defined identifier
宏定义的空格:
注:#define SUM (x) (x)+(x)
本意是想写SUM(x) = (x)+(x),但上面这个写法会出问题,问题就在于SUM后的这个空格
但是SUM(x)定义正确之后,在使用时写SUM(3)和SUM (3)一样
#undef是用来撤销宏定义的,用法如下:
#define PI 3.141592654
……
//code
#define PI
//下面的代码就不能用PI了,他已经被撤销了宏定义
也就是说宏的生命周期从#define开始到#undef结束
规则:1、宏不能在块中进行#define和#undef
通常,宏定义#define指令要放在接近文件开始的地方,在第一个函数定义之前,而#undef指令不一定
2、#undef通常不使用
3、尽量使用普通的函数,而不要使用“宏定义函数”。
可以减少代码空间的占用(ROM空间)
4、预处理指针中所有的宏标识符在使用前都应该先定义,除了#ifdef和#ifndef指令及defined()指令符