您的位置 首页 测评

CodeVisionAVR中的一个装备

CodeVisionAVR中的一个配置(2010-06-2214:41:23)标签:杂谈分类:AVR单片机下面是一段简单的程序:chara0;signedchara1;signed

CodeVisionAVR中的一个装备
(2010-06-22 14:41:23)
标签:

杂谈

分类: AVR单片机

下面是一段简略的程序:

char a0;

signed char a1;

signed int a2;

signed long a3;

LCD_CLS();

a0 = -16;

a0 >>= 2;

LCD_DispHex(8,0,a0,0,0);

a0 = 16;

a0 >>= 2;

LCD_DispHex(64,0,a0,0,0);

a1 = -16;

a1 >>= 2;

LCD_DispHex(8,8,a1,0,0);

a1 = 16;

a1 >>= 2;

LCD_DispHex(64,8,a1,0,0);

a2 = -16;

a2 >>= 2;

LCD_DispHexInt(8,16,a2,0,0);

a2 = 16;

a2 >>= 2;

LCD_DispHexInt(64,16,a2,0,0);

a3 = -16;

a3 >>= 2;

LCD_DispHexLong(8,24,a3,0,0);

a3 = 16;

a3 >>= 2;

LCD_DispHexLong(64,24,a3,0,0);

履行成果是:

3C 04

FC 04

FFFC 0004

FFFFFFFC 00000004

这让我很疑惑,为什么a0界说为char,a1界说为signed char,它们的运算成果就不同了呢?一般情况下char型和signed char型、int型和signed int、long和signed long是完全一致的。

经查看,本来CodeVisionAVR的工程装备中有一个小的设置,如右图红框勾出。

假如此设置打勾选中,依据相关协助,那么该工程中char型变量界说等同于unsigned char。这和一般意义上的认知是不同的。

所以,日后在软件中尽量用signed char或unsigned char来清晰界说变量类型,以免一不小心工程装备弄错了而带来不必要的费事。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/256668.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部