二。符号
1.标准C语言的基本符号
符号 名称 符号 名称
, 逗号 > 右尖括号
. 圆点 ! 感叹号
; 分号 | 竖线
: 冒号 / 斜杠
? 问号 \ 反斜杠
’ 单引号 ~ 波折号
“ 双引号 # 井号
( 左圆括号 ) 右圆括号
[ 左方括号 ] 右方括号
{ 左大括号 } 右大括号
% 百分号 & and(与)
^ xor(异或) * 乘号
- 减号 = 等号
< 左尖括号 + 加号
2.注释符号
@1.几个似是而非的注释问题
A:/*……*/编译器剔除掉注释后,会用空格来代替原来的注释;
B://双斜杠也是注释;
C:\是一个接续符;
D:/*……*/的注释不能嵌套,因为/*总是与离它最近的*/匹配。
@2.y = x /* p
y = x /* p,这个表达式其实只是表示吧x的值赋给y,/*后面的
内容都当做注释,但是,由于没有找到*/,所以体术出错。
y = x/ (*p),表达式的意思就是x除以 p指向的内存里的值,把结
果赋给y。
@3.出色注释的基本要求
a:注释应当准确,易懂,防止有二义性。错误的注释不但无益
反而有害。
b:边写代码边注释,修改代码的同时修改相应的注释,以保证
注释与代码的一致性。不再有用的注释要及时删除。
c:注释是对代码的“提示”,而不是文档。程序中的注释应当
简单明了,注释太多了会让人眼花缭乱。
d:一目了然的语句不加注释。
e:对于全局数据(全局变量,常量定义等)必须要加注释。
f:注释采用英文,尽量避免在注释中使用缩写,特别是不常用
的缩写。
g:注释的位置应与被描述的代码相邻,可以与语句在同一行,
也可以在上行,但不可以放在下方。同一结构中不同域的注释要对齐。
h:当代码比较长2,特别是有多重嵌套时,应当在一些段落的结
束处加注释,便于阅读。
i:注释的缩进要与代码的缩进一致。
j:注释代码段时应注重“为何做”,而不是“怎么做”。
k:数值的单位一定要注释。
l:对变量的范围给出注释,尤其是参数。
m:对一系列的数字编号给出注释,尤其在编写底层驱动程序的
时候(比如引脚编号)。
n:对于函数的入口/出口数据,条件语句,分支语句给出注释。
o:避免在一行代码或表达式的中间插入注释。
p:复杂的函数中,在分支语句,循环语句结束之后需要适当的
注释,方便区分各分支或循环体。
q:对于不需要被编译的区域要使用条件编译来实现,例如,使
用带有注释的#if或#ifdef结构。
3.连续符合转义符
@1.c语言里以反斜杠表示断行。编译器会将反斜杠剔除掉,跟在反斜
杠后面的字符自动接续到前一行。但是注意,反斜杠之后不能有空格,反斜杠
的下一行之前也不能有空格。
@2.反斜杠除了可以被用作接续符外,还能被用作转义字符的开始标
识。
常用的转义字符及其含义
转义字符 含义
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜杠\
\' 单引号符
\a 响铃
\ddd 1-3位八进制数所代表的字符
\xhh 1-2位十六进制数所代表的字符
4.单引号,双引号
双引号引起来的都是字符串常量;单引号引起来的都是字符常量。
‘a’在内存中占1个字节;“a”在内存中占2个字节。
自负在内存里是以ASCAII码存储的,所以字符常量可以与整型常量
或变量进行运算,如:'A'+ 1.
5.逻辑运算符
双目运算符:|| ,&&
6.位运算
C语言中位运算包括下面几种:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
a:位操作需要宏定义好再使用。
b:如果位操作符‘~’和‘<<’应用于基本类型无符号字符型或
无符号短整型的操作数,结果会立即转换成操作数的基本类型。 ??
c:位运算符不能用于基本类型是有符号的操作数上。
d:一元减运算符不能用在基本类型无符号的表达式上,除非在
使用之前对两个操作数进行大小判断,且被减数必须大于减数。
@1.左移和右移
左移运算符“<<”是双目运算符,其功能把“<<”左边的运算数的各
二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位
补0。
右移运算符“>>”是双目运算符,其功能是把“>>”左边的运算数的
各二进位全部右移若干位,由“>>”右边的数制定一定的位数。
无符号,补0;有符号,补1。
7.花括号:花括号的作用简单来说就是打包。
8.++ --操作符
++i+++i+++i 怎么算?
贪心法:
c语言有这样一个规则:每个符号应该包含尽可能多的字符。
也就是说,编译器将程序分解成符号的方法是,从左到右一个一个字符的读入
,如果该字符可能组成一个符号,那么再读入下一个字符时,判断已经读入的
两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入
下一个字符,重复上述判断,直到读入的字符组成的字符串已不可能组成一个
有意义的符号。
需要注意的是:除了字符串与字符常量,符号的中间不能嵌
入空白(空格,制表符,换行符等)。
1.标准C语言的基本符号
符号 名称 符号 名称
, 逗号 > 右尖括号
. 圆点 ! 感叹号
; 分号 | 竖线
: 冒号 / 斜杠
? 问号 \ 反斜杠
’ 单引号 ~ 波折号
“ 双引号 # 井号
( 左圆括号 ) 右圆括号
[ 左方括号 ] 右方括号
{ 左大括号 } 右大括号
% 百分号 & and(与)
^ xor(异或) * 乘号
- 减号 = 等号
< 左尖括号 + 加号
2.注释符号
@1.几个似是而非的注释问题
A:/*……*/编译器剔除掉注释后,会用空格来代替原来的注释;
B://双斜杠也是注释;
C:\是一个接续符;
D:/*……*/的注释不能嵌套,因为/*总是与离它最近的*/匹配。
@2.y = x /* p
y = x /* p,这个表达式其实只是表示吧x的值赋给y,/*后面的
内容都当做注释,但是,由于没有找到*/,所以体术出错。
y = x/ (*p),表达式的意思就是x除以 p指向的内存里的值,把结
果赋给y。
@3.出色注释的基本要求
a:注释应当准确,易懂,防止有二义性。错误的注释不但无益
反而有害。
b:边写代码边注释,修改代码的同时修改相应的注释,以保证
注释与代码的一致性。不再有用的注释要及时删除。
c:注释是对代码的“提示”,而不是文档。程序中的注释应当
简单明了,注释太多了会让人眼花缭乱。
d:一目了然的语句不加注释。
e:对于全局数据(全局变量,常量定义等)必须要加注释。
f:注释采用英文,尽量避免在注释中使用缩写,特别是不常用
的缩写。
g:注释的位置应与被描述的代码相邻,可以与语句在同一行,
也可以在上行,但不可以放在下方。同一结构中不同域的注释要对齐。
h:当代码比较长2,特别是有多重嵌套时,应当在一些段落的结
束处加注释,便于阅读。
i:注释的缩进要与代码的缩进一致。
j:注释代码段时应注重“为何做”,而不是“怎么做”。
k:数值的单位一定要注释。
l:对变量的范围给出注释,尤其是参数。
m:对一系列的数字编号给出注释,尤其在编写底层驱动程序的
时候(比如引脚编号)。
n:对于函数的入口/出口数据,条件语句,分支语句给出注释。
o:避免在一行代码或表达式的中间插入注释。
p:复杂的函数中,在分支语句,循环语句结束之后需要适当的
注释,方便区分各分支或循环体。
q:对于不需要被编译的区域要使用条件编译来实现,例如,使
用带有注释的#if或#ifdef结构。
3.连续符合转义符
@1.c语言里以反斜杠表示断行。编译器会将反斜杠剔除掉,跟在反斜
杠后面的字符自动接续到前一行。但是注意,反斜杠之后不能有空格,反斜杠
的下一行之前也不能有空格。
@2.反斜杠除了可以被用作接续符外,还能被用作转义字符的开始标
识。
常用的转义字符及其含义
转义字符 含义
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜杠\
\' 单引号符
\a 响铃
\ddd 1-3位八进制数所代表的字符
\xhh 1-2位十六进制数所代表的字符
4.单引号,双引号
双引号引起来的都是字符串常量;单引号引起来的都是字符常量。
‘a’在内存中占1个字节;“a”在内存中占2个字节。
自负在内存里是以ASCAII码存储的,所以字符常量可以与整型常量
或变量进行运算,如:'A'+ 1.
5.逻辑运算符
双目运算符:|| ,&&
6.位运算
C语言中位运算包括下面几种:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
a:位操作需要宏定义好再使用。
b:如果位操作符‘~’和‘<<’应用于基本类型无符号字符型或
无符号短整型的操作数,结果会立即转换成操作数的基本类型。 ??
c:位运算符不能用于基本类型是有符号的操作数上。
d:一元减运算符不能用在基本类型无符号的表达式上,除非在
使用之前对两个操作数进行大小判断,且被减数必须大于减数。
@1.左移和右移
左移运算符“<<”是双目运算符,其功能把“<<”左边的运算数的各
二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位
补0。
右移运算符“>>”是双目运算符,其功能是把“>>”左边的运算数的
各二进位全部右移若干位,由“>>”右边的数制定一定的位数。
无符号,补0;有符号,补1。
7.花括号:花括号的作用简单来说就是打包。
8.++ --操作符
++i+++i+++i 怎么算?
贪心法:
c语言有这样一个规则:每个符号应该包含尽可能多的字符。
也就是说,编译器将程序分解成符号的方法是,从左到右一个一个字符的读入
,如果该字符可能组成一个符号,那么再读入下一个字符时,判断已经读入的
两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入
下一个字符,重复上述判断,直到读入的字符组成的字符串已不可能组成一个
有意义的符号。
需要注意的是:除了字符串与字符常量,符号的中间不能嵌
入空白(空格,制表符,换行符等)。