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

声明:本文内容为本人学习嵌入式linux所遇问题后,将自己所理解的注意事项作出总结,以便日后学习,如有错误,请大神能予以指出,小弟不胜感激!


环境:VMware-workstation-full-10.0.4-2249910 和 ubuntu 12.04
注意:此文档程序无任何实际意义,仅做演示使用;

1、switch()内的内容一定为整型或者整型表达式,其中的表达式为常量表达式;
2、while 与 do-while 的区别
while 先判断,再执行;   do - while  先执行一次,再判断执行;
示例:
#include <stdio.h>
int main()
{
	int i = 0;
	printf("下面是while输出的结果:\n");
	while (i > 0)
	{
		printf("我是while.\n");
	}
	printf("-------------------------\n");
	printf("下面是do - while输出的结果:\n");
	do 
	{
		printf("我是do - while.\n");
	}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\n", a);
编译时:
提示出错!
5、编写判断表达式时,一般将常量放在左边;原因是:特别是在==于判断时,容易将“ == ”写成“ = ”,造成表达式恒成立,会进入死循环,并且不容易发现这种错误;当把常量放左边时,写成 “ = ”则是在给常量赋值,在编译时会提示错误。
eg:if (0 = a)
printf("我是a\n");
报错,方便我们排查;
6、短路法则:对于逻辑运算的 && 和 || 是满足短路法则的
1)&& 为 同时为真才为真,在exp1 && exp2中,exp1为假,不管exp2是否为真,此表达式都为假,故当exp1为假,exp2表达式都不再判断;
2)|| 只要有一个为真,则表达式为真,在exp1 || exp2中,exp1为真,不管exp2是否为真,此表达式都为真,故当exp1为真,exp2表达式都不再判断;
eg:
#include <stdio.h>

int main()
{
	int a = 0, b= 1;
	if (a++ && b++)
	{
		printf("&& 我执行了吗?\n");
	}
	printf("a = %d, b = %d\n", a, b);
	int c = 1, d = 0;
	printf("---------------------------\n");
	if (c++ || d++)
	{
		printf("|| 我执行了吗?\n");
	}
	printf("c = %d, d = %d\n", c, d);
	return 0;
}
实验结果:
结果分析:
初始状态a = 0; b = 1; 当if (a++ && b++) a = 0;为假,直接退出判断,b++不再执行,所以b还是等于1;
if(c++ || d++) 同理;
7、逗号表达式在实际的编程中,无实际意义,最主要的用途是同时运算多个表达式和初始化(特别是for循环);
eg:
#include <stdio.h>
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("\n");
	for (i = 0; i < 5; i++)
		printf("%d", b[i]);
	printf("\n");
	return 0;
}
结果:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值