小言_互联网的博客

C语言深度解剖 -- 符号

311人阅读  评论(0)

一、注释符号

1、" // " 和“ / * * / ” , C语言中,编译器会将 注释剔除,然后用空格去代替原来的注释。
2、“ / * * / ” 这种形式的注释不能嵌套,如:
/ 这是 / * 非法的 * / * /
因为 “ / * ”总是与离他最近的 “ * / ” 匹配。
3、y = x/ *p 或 y = x/(*p)表示 x 除以 p指向的内存里的值,把结果赋值为 y 。 **斜杠(/)和星号(
)之间没有空格 就会被当作注释的开始。**

4、出色注释的基本要求:

规则1:注释应当准确、易懂,防止有二义性。错误的注释不但无益反而有害。
规则2:边写代码边注释,修改代码要修改相应的注释,以保证注释与代码的一致性。
       不再有用的注释要及时删除。
规则3:注释是对代码的 “ 提示 ”,而不是文档。
       程序中的注释应当简单明了,注释太多会让人眼花缭乱。
规则4:一目了然的语句不加注释。
规则5:对于全局数据(全局变量、常量定义等)必须要加注释。
规则6:注释采用英语,尽量避免在注释中使用缩写,特别是不常用的缩写。
规则7:注释的位置应与被描述的代码相邻,可以与语句在同一行,也可以在上行,
       但不可放在下方。同一结构中不同域的注释要对齐。
规则8:当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,
	   便于阅读。
规则9:注释的缩进要与代码的缩进一致。
规则10:注释代码段时应注重 “ 为何做(why)” ,而不是 “ 怎么做 (how)”。
规则11:数值的单位一定要注释。
规则12:对变量的范围给出注释。
规则13:对一系列的数字编号给出注释。尤其在编写底层驱动程序的时候。
规则14:对于函数的入口、出口数据给出注释。

二、连续符和转义符

1、反斜杠(\)可以被用作连续符外,还能被用作转义字符的开始标识。
2、被用作连续符时:反斜杠后不能有空格,反斜杠的下一行也不能有空格。

#def\
ine MAC\
RO 这是一条合法的\\
n字符串

3、常用的转义字符

\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\ 反斜杠符 ” \ “
单引号符
\a 鸣铃
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符

三、单引号、双引号

1、双引号引起来的都是字符串常量,单引号引起来的都是字符常量。
2、‘ a ’ 和 ’ a ’ 在内存中,前者是一个字节,后者是两个字节。

四、逻辑运算符

1、或运算(||):参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果为假。
2、与运算(&&):参与运算的两个量都为真时,结果为真,否则为假。
3、非运算(!):参与运算量为真时,结果为假;参与结果为假时,结果为真。
4、优先级:赋值运算符(=) < &&和|| < 关系运算符 < 算术运算符 < 非(!)

五、位运算符

1、C语言中位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
“>>” 右移

2、实现不用第三个变量交换两个变量的值:
a ^= b;
b ^= a;
a ^= b;

3、左移运算符:是双目运算符,其功能是把<<左边的运算数的各二进位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,地位补0。
4、右移运算符:是双目运算符,其功能是把>>左边的运算数的各二进位全部右移若干位,由>>右边的数指定移动的位数。**注意:**对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0;而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。

六、花括号

1、花括号的作用是:打包。
2、为了把一些语句或代码打个包包起来,使之成为一个整体,并与外界绝缘。

七、++、–操作符

i = 0;
① j  = (i++,i++,i++);
②for(i = 0; i < 10; i ++)
{
	//code
}
③ k = (i++) + (i++) +(i++);

1、逗号表达式,i 在遇到每个逗号后,认为本计算单位已经结束,i 这个时候自加。结果为2。
2、i 与 10进行比较后,认为本计算单位已经结束。
3、i 遇到分号才认为本计算单位已经结束,i 这个时候自加。

4、后缀运算是在本计算单位计算结束后再自加或自减。
5、C语言有一个规则:每一个符号应该包含尽可能多的字符。

++i+++i+++i;
表示为:
++i+ ++i+  ++i;

八、运算符的优先级

优先级问题 表达式
.的优先级高于* * p.f , 对p取f偏移,作为指针,然后进行接触引用操作。*(p.f)
[ ]高于 * int *ap[ ], ap是个元素为int 指针的数组 。int *(ap[ ])
函数()高于* int *fp() , fp是一个函数,返回int *。int *(fp())
==和!=高于位操作 (val & mask != 0), val & (mask != 0)
==和!=高于赋值符 c = getchar() != EOF, c = (getchar() != EOF)
算术运算符高于位移运算符 msb << 4 + lab, msb << (4 + lab)
逗号运算符在所有运算符中优先级最低 i = 1, 2; (i = 1), 2

转载:https://blog.csdn.net/qq_45124382/article/details/101201230
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场