新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > CodeVisionAVR中的一個配置

CodeVisionAVR中的一個配置

作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
CodeVisionAVR中的一個配置
(2010-06-22 14:41:23)
標簽:

雜談

分類: AVR單片機

下面是一段簡單的程序:

本文引用地址:http://butianyuan.cn/article/201611/323040.htm

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);

執(zhí)行結(jié)果是:

3C 04

FC 04

FFFC 0004

FFFFFFFC 00000004

這讓我很納悶,為什么a0定義為char,a1定義為signed char,它們的運算結(jié)果就不同了呢?通常情況下char型和signed char型、int型和signed int、long和signed long是完全一致的。

經(jīng)檢查,原來CodeVisionAVR的工程配置中有一個小的設置,如右圖紅框勾出。

如果此設置打勾選中,根據(jù)相關幫助,那么該工程中char型變量定義等同于unsigned char。這和通常意義上的認知是不同的。

所以,日后在軟件中盡量用signed char或unsigned char來明確定義變量類型,免得一不小心工程配置弄錯了而帶來不必要的麻煩。



關鍵詞: CodeVisionAVR中配

評論


技術專區(qū)

關閉