c语言符号深度理解和再认识

文章目录二、条件编译二、斜杠符号(续航符)三、单引号和双引号 四、为什么计算机需要ASCII 五、逻辑运算符 六、位运算符号(六)、整型提升问题(七)、左移和右移 2.深入理解七、++和--操作符八、取模/取余运算问题 (二)、取模问题九、运算符优先级问题
一、注释符号
初步了解一下;/* */这个是c语言风格,//是c++风格 。
(一)、注释的本质
首先run代码引入主题:
int main(){int /**/ i;//okchar* s = "abcdefgh//hijklmn";//ok//Is it a\valid comment? //okint /* */t j;//errreturn 0;}
我们发现int /* */t j;是错误的 。用Linux看预处理:
那么就是编译出错了 。
结论:注释被替换,本质是替换成空格 。
有了这个总结,下面我们再来看一个例子:
这样就足以看出我们的注释是替换成了空格 。
(二)、c语言注释风格嵌套问题
#include int main(){/*printf("hello world!");printf("hello world!");*/ //不报错printf("hello world!");printf("hello world!");*///报错}
说明/* 总是与离它最近的 */ 匹配 。
(三)、/和*的连用问题
#include int main(){int x = 10;int y = 0;int z = 5;int* p = &z;y = x/*p;//err 具有二义性return 0;}
这里的x/*p,本以为是对x和 *p除法运算,实际上编译器把/ *当作了注释 。最好对 *p加上(),这样就可以解决问题了 。
(四)、注释的基本要求注释应该准确、易懂,防止有二义性 。注释是对代码的“提示”,并不是文档 。对于全局数据(全局变量、常量定义)都必须加上注释 。注释的位置应与被描述代码相邻,必须在上方 。注释的缩进要与代码的缩进一致 。代码注释段时应注重why而不是how.数值的单位一定要注释 。对于函数的入口/出口数据、条件语句、分支语句给注释 。在复杂的函数中,在分支、循环语句结束之后需要给注释 。
例如:
#include int main(){while(1){if(){}else if{}else{}//end of else(对其进行注释)//........//非常多的判断代码}//end of while(对其进行注释)return 0;}
对变量的范围进行注释,尤其是数 。
具体就是这么多的推荐,主要是了解,后期可以做项目了,自然就会了 。
二、条件编译
通过两个图可以直观了解条件编译是什么?
两个图进行对比,很容易知道条件编译的用途 。
其实,在我们手机中,我们手机对应的设置中有个语言选项,有很多语言选项,在设置的时候,其原理就是条件编译实现的,代码并没有变化,而是类似于条件编译这种思维完成的 。
二、斜杠符号(续航符) (一)、介绍
#include int main(){int a = 1;int b = 2;int c = 3;if(1 == a &&\2 == b &&\3 == c){printf("hello human");}return 0;}
那么我们可不可以在\之前带空格?
这个是可以的 。
可不可以在\之后带空格?
这个是不行的,在续航符之后最好任何符号都不要带上 。
(二)、续航符和换行符是有区别的
续航符号顾名思义就是对这一行后面补充,而换行符则是换行 。
(三)、转义
转义有两种转法:
字面转特殊特殊转字面
#include int main(){printf("\"");// "转义就是特殊转字面printf("hello \n human");// \n就是字面转特殊return 0;}
(四)、有趣的换行:\n和回车:\r
首先理解回车和换行两个概念: