注释符号
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()指令符