嵌入式linux入门之c语言学习注意事项总结(二)

2019-07-13 07:05发布

声明:本文内容为本人学习嵌入式linux所遇问题后,将自己所理解的注意事项作出总结,以便日后学习,如有错误,请大神能予以指出,小弟不胜感激!
环境:VMware-workstation-full-10.0.4-2249910 和 ubuntu 12.04 注意:此文档程序无任何实际意义,仅做演示使用;

1、switch()内的内容一定为整型或者整型表达式,其中的表达式为常量表达式; 2、while 与 do-while 的区别 while 先判断,再执行;   do - while  先执行一次,再判断执行; 示例: #include int main() { int i = 0; printf("下面是while输出的结果: "); while (i > 0) { printf("我是while. "); } printf("------------------------- "); printf("下面是do - while输出的结果: "); do { printf("我是do - while. "); }while (i > 0); return 0; }
执行结果:

结果分析:while 时是先判断i>0否,很显然不大于,条件不成立,不执行while循环体;当do - while的时候,先是先执行一次循环体,然后再判断i是否大于0,所以会输出结果;
3、一般情况下(个人觉得哈),知道循环的次数时使用for循环,知道条件使用while循环;不过其实两者之间是可以相互转换的; 4、除法运算符 “/ ”和 取模运算符 “ / ”包括除 和 整除两种运算, 1)当除数和被除数都为整数时,结果只保留整数部分而舍弃小数部分;  eg: int a =  2/4 = 0; 2) 当除数和被除数只要有一个浮点数,进行浮点数相除; eg: 2.0 / 4 = 0.5; “ % ”取模运算  可以说是求余运算,同时两个操作数只能是整数,不能是浮点数; eg: int a = 2.0 % 4;
printf("a = %d ", a);
编译时: 提示出错! 5、编写判断表达式时,一般将常量放在左边;原因是:特别是在==于判断时,容易将“ == ”写成“ = ”,造成表达式恒成立,会进入死循环,并且不容易发现这种错误;当把常量放左边时,写成 “ = ”则是在给常量赋值,在编译时会提示错误。 eg:if (0 = a)
printf("我是a ");
报错,方便我们排查; 6、短路法则:对于逻辑运算的 && 和 || 是满足短路法则的 1)&& 为 同时为真才为真,在exp1 && exp2中,exp1为假,不管exp2是否为真,此表达式都为假,故当exp1为假,exp2表达式都不再判断; 2)|| 只要有一个为真,则表达式为真,在exp1 || exp2中,exp1为真,不管exp2是否为真,此表达式都为真,故当exp1为真,exp2表达式都不再判断; eg: #include int main() { int a = 0, b= 1; if (a++ && b++) { printf("&& 我执行了吗? "); } printf("a = %d, b = %d ", a, b); int c = 1, d = 0; printf("--------------------------- "); if (c++ || d++) { printf("|| 我执行了吗? "); } printf("c = %d, d = %d ", c, d); return 0; }实验结果: 结果分析: 初始状态a = 0; b = 1; 当if (a++ && b++) a = 0;为假,直接退出判断,b++不再执行,所以b还是等于1; if(c++ || d++) 同理; 7、逗号表达式在实际的编程中,无实际意义,最主要的用途是同时运算多个表达式和初始化(特别是for循环); eg: #include int main() { int a[5] = {1, 2, 3, 4, 5}; int b[5]; int i, j; for (i = 0, j = 4; i < 5; i++, j--) { b[j] = a[i]; printf("%d", a[i]); } printf(" "); for (i = 0; i < 5; i++) printf("%d", b[i]); printf(" "); return 0; }结果: