C语言小结 20-01-20

一般说来,volatile用在如下的几个地方: 

1、中断服务程序中修改的供其它程序检测的变量需要加volatile; 

2、多任务环境下各任务间共享的标志应该加volatile; 

3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;

volatile限定符用来告诉编译器,该对象的值无任何持久性,不要对它进行任何优化;
它迫使编译器每次需要该对象数据内容时都必须读该对象,而不是只读一次数据并将它放在寄存器中以便后续访问之用(这样的优化可以提高系统速度)。
不使用volatile,可能造成运行逻辑错误,但是不必要的使用volatile会造成代码效率低下(编译器不优化volatile限定的变量),
因此清楚的知道何处该使用volatile限定符,是一个嵌入式程序员的必修内容。

 

原因是指针做加减运算时是以指针的数据类型为单位。p+1实际上是按照公式p+1*sizeof(int)来计算的。

使用sizeof获取数组长度时,不要对指针应用sizeof操作符

增量运算符”++”和减量运算符”--“既可以做前缀也可以做后缀。
前缀和后缀的区别在于值的增加或减少这一动作发生的时间是不同的。作为前缀是先自加或自减然后做别的运算,作为后缀时,是先做运算,之后再自加或自减。

C语言和硬件之间由编译器来联系,一些C标准不支持的硬件特性操作,由编译器提供。

使用宏定义的时候,最好将被定义的内容用括号括起来。

未定义:

a[i] = i++; /* 未定义行为 */
先执行i++再赋值,还是先赋值再执行i++是由编译器决定的,而两种不同的执行顺序的结果差别是巨大的。

printf("%d %d\n", ++n, power(2, n));    /* 未定义行为 */ 
是先执行++n还是先执行power(2,n)是由编译器决定的。

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值