网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> 技术文库 >> 嵌入式 >> 文章正文
  C语言表达式的int规则         ★★★ 【字体:
C语言表达式的int规则
作者:61IC录入    文章来源:本站原创    点击数:    更新时间:2006-4-7    

C语言规定,在进行表达式计算和函数调用/返回时,所有短于int的数据类型一律先转化为int。关于这点,最容易犯的错误如:
(这些例子假设系统int宽度为2字节,32位系统中基本原理是一样的)

uint8_t a, b;

a=0xFE;
b=0x01;
if (a==~b)
{
    /* 这个条件不会成立!!!
     * 因为相当于比较if (0x00FE==~(0x0001)),即if (0x00FE==0xFFFE)。
     * 要想得到正确结果,应该是if (a==(uint8_t)~b) */
}

还有,如:

uint8_t a;
uint16_t b;

a=0xA0;
b=a*0x100/1000;

b的值并不是你预想的0xA000u/1000=40960/1000=40=0x0028,
而是(-24576)/1000=-24=0xFFE8!!!

要想得到正确结果,应写成b=a*0x100u/1000(C语言规则,有符号和无符号混合运算按无符号处理)或者b=(uint16_t)a*0x100/1000(强制将a扩展出来的int转化成uint16_t再算)。

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号