新聞中心

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

        CodeVisionAVR中的一個配置

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

        雜談

        分類: AVR單片機(jī)

        下面是一段簡單的程序:

        本文引用地址:http://www.104case.com/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的工程配置中有一個小的設(shè)置,如右圖紅框勾出。

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

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



        關(guān)鍵詞: CodeVisionAVR中配

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 黑水县| 安溪县| 荆门市| 铜川市| 汝城县| 托克逊县| 陇西县| 沭阳县| 萨嘎县| 瑞昌市| 湛江市| 平邑县| 宁化县| 青岛市| 濉溪县| 鄄城县| 友谊县| 乌兰浩特市| 乌拉特中旗| 长岛县| 涿鹿县| 武威市| 临沭县| 行唐县| 和田市| 滁州市| 庄浪县| 龙泉市| 松原市| 桐梓县| 绥滨县| 高州市| 达孜县| 卢龙县| 嘉荫县| 甘南县| 响水县| 上饶市| 阜南县| 青阳县| 方正县|