標(biāo)題:
C語言取反問題
[打印本頁]
作者:
xzf586
時(shí)間:
2020-7-10 11:12
標(biāo)題:
C語言取反問題
#define LED 1<<7
rGPFDAT=~LED; //結(jié)果rGPFDAT=0xFFFFFF00
若將定義改為
#define LED 0x80
rGPFDAT=~LED; //結(jié)果rGPFDAT=0xFFFFF7F
在ADS1.2下,怎么結(jié)果就不一樣呢?
作者:
niceMCU
時(shí)間:
2020-7-10 12:13
0xFFFFF7F應(yīng)該是正確的結(jié)果
作者:
MikeCai
時(shí)間:
2020-7-10 13:41
這是 數(shù)據(jù)宏定義不同造成 ,LED本身 是無符號(hào)數(shù)還是有符號(hào)不同,您試著 將LED 及~LED打印值試試看。
作者:
小劉同學(xué)home
時(shí)間:
2020-7-10 19:43
有符號(hào)數(shù)和無符號(hào)數(shù)的區(qū)別吧
作者:
f556
時(shí)間:
2020-7-11 17:04
#define LED 1<<7 有問題,看define的詳細(xì)說明
所以rGPFDAT=~LED;結(jié)果是rGPFDAT =~1<<7的運(yùn)算模式,本意是要 =~(1<<7)
~比<<優(yōu)先3級(jí)。
作者:
robin1024
時(shí)間:
2020-7-11 19:13
#define LED 1<<7 寫法不規(guī)范,要加括號(hào)#define LED ( 1<<7)才行
因?yàn)榫幾g的時(shí)候LED并不是0x80,而是‘1<<7’這四個(gè)字符,所以當(dāng)~LED時(shí),實(shí)際的語句是~1<<7,等同于(~1)<<7,結(jié)果就是0x00,對(duì)于32位MCU來說會(huì)自動(dòng)補(bǔ)足前面的24位,變成0xFFFFFF00
作者:
kuangquanshui
時(shí)間:
2020-7-11 22:44
第一句需要括號(hào)括住,#define只是宏定義,在程序里面相當(dāng)于替換,就會(huì)變成=~1<<7,取反運(yùn)算符比左移運(yùn)算符的優(yōu)先級(jí)高,建議你以后寫的時(shí)候這樣:#define LED (1<<7)
作者:
xzf586
時(shí)間:
2020-7-12 11:04
robin1024 發(fā)表于 2020-7-11 19:13
#define LED 1
多謝多謝
作者:
xzf586
時(shí)間:
2020-7-12 11:04
f556 發(fā)表于 2020-7-11 17:04
#define LED 1
多謝多謝
作者:
xzf586
時(shí)間:
2020-7-12 11:05
謝謝樓上各位的回復(fù)解答!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1