C语言深度解剖(2)

注释符号

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值