嵌入式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;
}
结果:
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮