C语言程序书写规范
代码规范(C语言)
https://zhuanlan.zhihu.com/p/71785504
一、关于空格建议
1、左右{ } 之内的代码向内缩进,地位相等的无需缩进,但要左对齐,地位不同的继续缩进。每层缩进使用一个制表位(TAB)。
2、在双目运算符的两边各留下一个空格。在+、-、*、/、!=等运算符的两侧应用空格隔开。例: 正确:a += b; 错误:a+=b;(单目运算符前后不加空格)
3、关键字之后要留空格,函数名之后不要留空格;
4、逗号之后留空格,若分号不为本行的结束,其后加空格;
5、向后紧跟的括号、分号、逗号,紧跟处不留空格;
二、关于代码行建议
1、成对的符号成对书写,如 ()、[]、{} 等。
2、左右{ 和 } 都要独占一行,互为一对的 { } 位于同一列,与引用它们的左语句对齐。
3、一行代码只做一件事,如只定义一个变量,只写一条语句;
4、if、else、for、while、do 等语句自占一行,执行语句不得紧跟其后,执行语句就算只有一条也要加 { }。
5、表达式较长的 for 和 if 语句,为了紧凑,可删除一些空格,但是 for 和 if 其后紧跟的空格不可删除。
三、关于注释建议
1、函数的注释、代码块的注释写在代码的上面,使用/*开始..............*/结束。单独行代码的注释//............
https://cloud.tencent.com/developer/article/1424514
清晰的代码结构和书写风格确实是一种美。
1.代码书写
(1)花括号
if、else、for、while、do 等语句自占一行,执行语句不得紧跟其后。此外,非常重要的一点是,执行语句部分无论多少行,就算只有一行也要加括号{},并且遵循对齐的原则,这样可以防止书写失误。对齐,成对书写。
int a = 10;
if (a < 10)
{
printf("a is less than 10.\n");
}
else
{
printf("a is greater than 10.\n");
}
(2)加空格的情况
在逗号后面和语句中间的分号后面加上空格。
int i,j,k;
for (i = 0; i < n; i++) //for后面括号前面空一格
在双目运算符的两边各留下一个空格。
a = b;
关键字两侧加上空格
if (1)
for (i = 0; i < 100; i++);
(3)不加空格的情况
在结构体成员引用符号.和->左右两边不加空格
struct Student
{
int id;
char name[20];
};
struct Student a, *p=&a;
a.id = 101;
printf("%d", p->id);
函数名与左括号不加空格
int fun(void);
复合运算符中间不能加空格,否则会产生语法错误。
a + = b, a < = b 都是错误的
(4)折行的使用
每行的长度不要超过80个字符,当程序太长时,应该分行书写。当需要把一个程序行的内容分成几行书写时,操作符一个放在行末。
int flag = 0;
if ((ch >= 'a' && ch <= 'z') &&
(ch >= 'A' && ch <= 'Z'))
flag = 1;
2.注释书写规范
(1)注释风格
注释是对程序的说明,可出现在程序中任意合适的地方,注释从"/*"开始到最近一个"*/"结束。
在一般情况下,源程序有效注释量必须在 20% 以上。虽然注释有助于理解代码,但注意不可过多地使用注释。
每一条宏定义的右边必须要有注释,说明其作用。
代码块注释
//...
code
函数注释
注释一般列出版权说明、版本号、生成日期、作者、内容、功能、修改日志等。
遵循这些规范可以使代码更加清晰易读,提高代码的可维护性,同时也便于他人理解和使用你的代码
/**
* 返回数组中最大元素的下标
* @param arr int类型数组
* @param size 数组的大小
* @return 返回数组最大元素的下标
*/
int find_max_index(int arr[], int size)
{
}
3. 代码排版(缩进与空行的使用)
(1)缩进是通过键盘上的4个空格键实现的,缩进可以使程序更有层次感。使用制表符(tab)。原则是:如果地位相等,则不需要缩进;如果属于某一个代码的内部代码就需要缩进。
(2) 空行起着分隔程序段落的作用。空行得体将使程序的布局更加清晰。空行不会浪费内存,虽然打印含有空行的程序会多消耗一些纸张,但是值得。
①:独立的程序块之间、变量声明之后必须加空行。尽可能在定义变量的同时初始化该变量,即遵循就近原则。
②:每个函数定义结束之后都要加空行。
③:两个相对独立的程序块、变量说明之后必须要加空行。比如上面几行代码完成的是一个功能,下面几行代码完成的是另一个功能,那么它们中间就要加空行。这样看起来更清晰。
④:行只写一条语句,避免将多个短语句写在一行中。
4. 符号命名规则
C语言把标识符分为两大类:关键字和标识符。标识符大类分为预定义标识符和用户自定义标识符。
预定义标识符是C语言中系统预先定义的标识符,如系统类库名、系统常量名、系统函数名。预定义标识符具有见字明义的特点,如函数“格式输出”(英语全称加缩写:printf)、“格式输入”(英语全称加缩写:scanf)、sin、isalnum等等。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原意,使用不当还会使程序出错。
(1)标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成。并且首字符不能是数字,但可以是字母或者下划线。
(2)不能把C语言关键字作为用户标识符。
(3)标识符长度是由机器上的编译系统决定的,一般的限制为8字符(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)。
(4)标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写。
(5)所有宏定义、枚举常数和const变量,用大写字母命名,复合词用下划线隔开。
#define LENGTH 10
#define MAX_LEN 50
(6)函数名是复合词的,第一个词采用全部小写,随后每一个单词采用第一个字母大写,其余小写。
(7)循环变量采用i,j,k。
(8)全局变量词头用g_。
(9)临时变量词头用tmp_.。
双目运算符和单目运算符的主要区别在于它们操作的操作数数量不同。
-
双目运算符:双目运算符需要两个操作数来进行运算。例如,加法(+)、减法(-)、乘法(*)、除法(/)等都是双目运算符。这些运算符的作用是连接两个操作数,并对它们进行特定的数学运算。
-
单目运算符:单目运算符只需要一个操作数来进行运算。常见的单目运算符包括逻辑非(!)、按位取反(~)、自增(++)、自减(--)等。这些运算符对单个操作数进行操作,例如,逻辑非运算符将操作数的布尔值取反。
总结来说,双目运算符涉及两个操作数的运算,而单目运算符仅涉及一个操作数的运算。