注释符号
在C语言中,注释指的是在程序代码中添加的一些说明或标记,这些注释并不会被编译器解析和执行,仅仅是为了帮助程序员更好地理解代码。
C语言中支持两种注释方式:
1. 单行注释:使用“//”符号标记注释内容,从“//”开始到该行结尾处都被视为注释,编译器会忽略这些内容。
例如:
2. 多行注释:使用“/*”和“*/”符号包含多行注释内容,从“/*”开始到“*/”结束的所有内容都被视为注释,编译器会忽略这些内容。
例如:
注释是一种很重要的编程技巧,它可以增强代码的可读性和可维护性,方便其他人或自己在之后修改代码。
#include<stdio.h> int main() { int /* */ i; //正确 char* s = "abcd //xyz"; //正确 //Is it a\ valid comment? //正确 in/* */t j; //报错 return 0; }
注意:注释被替换,本质是替换成空格。
# 和 define之间是可以带空格的。
1.c语言风格注释无法嵌套
2./*总是与离它最近的*/匹配
其他注释方法
//基于条件编译,代码编译期间处理 #include <stdio.h> #define MONEY 0 int main() { #if MONEY printf("for test1\n"); //test1 printf("for test2\n"); //test2 #endif return 0; } //基于if判断,代码运行期间处理 #include <stdio.h> int main() { //if (0)注释方法 if (0) { printf("for test1\n"); //test1 printf("for test2\n"); //test2 } return 0; }
注释建议
复杂的函数中,在分支语句、循环语句结束之后需要适当的注释,方便区分各分支或循环体。
接续符和转义符
在C语言中,续行符和转义符都是用来对特殊字符进行处理和表示的。它们的作用与用途是不同的,下面我来简单解释一下:
1. 续行符
续行符是用来将一行过长的代码分割成多行的特殊字符,以便于阅读和编写。在C语言中,续行符使用反斜线符号“\”来表示,用在需要跨行的地方的末尾处。
例如:
使用续行符后,上面的代码可以分为三行来编写,其结果和不使用续行符的代码是一样的。
2. 转义符
转义符是用来表示一些特殊字符的符号。在C语言中,转义符使用反斜线符号“\”配合后面的字符来表示,常用的转义符有:
- \n:表示换行符
- \t:表示制表符
- \r:表示回车符
- \0:表示字符串结束标志符
需要注意的是,在字符串中使用引号时,需要使用转义符来表示引号自身,例如:
上面的代码使用了转义符“\”来表示引号自身,因为在字符串中使用引号会引起歧义。
在续行符\之前或者之后带上空格,行不行?
C中,有一些字符,就是他的字面意思,比如'n','b','t'。
也有一些字符,本身就是特殊含义的,比如:" , ', \
转义的本质含义是:字面转特殊,或者特殊转字面。
在第6行中,出现了一个编译错误,因为在printf函数中缺少一个右括号)。该行代码的目的是要输出一个双引号,但是,由于双引号也是C语言中的特殊字符,因此需要在前面加上一个反斜杠\,来表示它是一个字面量,而不是代码中的引号。
在第7行中,出现了一个特殊字符转义序列\",它表示输出一个双引号。
在第8行中,使用了特殊字符转义序列\n,它表示输出一个换行符。
在第9行中,使用了特殊字符转义序列\t,它表示输出一个制表符。
\n:换行符与\r:回车符之间的区别
在计算机文本文件中,"\n"代表换行符(Line Feed),通常被译为"新行"。而"\r"代表回车符(Carriage Return),通常被译为"回车"。
在早期的打印机、终端设备中,换行和回车都是必须的操作。当需要让打印头或光标移动到下一行的开头时,需要先执行回车操作,然后再执行换行操作。这种习惯一直延续下来,即"回车+换行"的序列被用作一个行的结束和下一行的开始标志。
但是在现代的计算机系统中,通常只需要用到换行符。因此,当我们在Windows系统中使用记事本编辑文本文件时,换行符和回车符会被同时输出,但是在其他平台上,如Linux、Mac等,只会输出换行符。
简单来说,换行符是让光标移到下一行的开头,而回车符是让光标移到本行的开头。但是,现在通常只需要用换行符就可以了。
两个小程序(旋转光标、倒计时)
旋转光标
#include<stdio.h> #include<windows.h> #include<string.h> int main() { int index = 0; const char* label = "|/-\\";//由于\是特殊字符,需要转义成字面字符 //printf("%d\n", strlen(label));//4 - 个字符 while (1) { index %= 4; printf("[%c]\r", label[index]); index++; Sleep(1000); } return 0; }
这段代码是一个简单的命令行动画,通过不断地输出字符 "|/-\\" 实现一个不断旋转的动画效果。具体来说:
1. 在 main 函数中定义变量 index,用于表示当前应该输出那个字符;
2. 定义常量指针 label,指向字符数组 "|/-\\",存储了要输出的四个字符;
3. 使用一个 while 循环,不断执行以下操作:
4. 使用取模运算符将 index 的值限制在 0~3 之间,确保 index 不会越界;
5. 使用 printf 函数输出格式化字符串 "[%c]\r",其中 %c 表示要输出的字符,\r 表示将输出的光标移回行首,以便下一次输出覆盖当前输出;
6. 将 index 值加 1,以便下一次循环时输出下一个字符;
7. 使用 Sleep 函数暂停一段时间,以便动画效果更显著;
8. 循环回到第 4 步,继续输出动画。
倒计时
#include<stdio.h> #include<windows.h> int main() { int i = 9; for (i = 9; i >= 0; i--) { printf("[%d]\r", i); Sleep(1000); } return 0; }
这段代码是一个简单的倒计时程序,通过循环输出数字并使用 Sleep 函数暂停一段时间,实现倒计时效果。具体来说:
1. 在 main 函数中定义变量 i 并初始化为 9,用于表示当前的倒计时值;
2. 使用 for 循环从 9 开始倒数,一直到 0;
3. 在循环体中,使用 printf 函数输出格式化字符串 "[%d]\r",其中 %d 表示要输出的数字,\r 表示将输出的光标移回行首,以便下一次输出覆盖当前输出;
4. 使用 Sleep 函数暂停一秒钟,以便倒计时效果更显著;
5. 循环回到第 3 步,输出下一个数字,直到倒计时结束;
6. for 循环结束后,程序返回 0,表示正常结束。
learn_C_deep_10 深刻认识C语言重点操作符(下):https://developer.aliyun.com/article/1424654