表現(xiàn)奇怪的0x80.zip
(17.09 KB, 下載次數(shù): 19)
xuyaqi 發(fā)表于 2022-9-12 10:07
signed char 的范圍:-128-127 對于有符號數(shù):最高位代表符號位: 0代表正數(shù) 1代表負數(shù) 。
188610329 發(fā)表于 2022-9-12 11:49
正負數(shù),是人為劃定的一個范圍,你要判斷正負,也是應該用if(a
vca 發(fā)表于 2022-9-13 10:33
你是從哪里得出0x80被解釋為負數(shù)的結論。
注釋的意思和你理解的意思真的一樣嗎?
這個注釋就一定是對的嗎 ...
censv 發(fā)表于 2022-9-12 12:16
我知道,但我說的是字面量0x80
censv 發(fā)表于 2022-9-12 21:35
你說的對,0x80就是128,永遠是正數(shù)。
在例子2中,字面量0x80被解釋為負數(shù),我認為是keil bug,你覺得呢 ...
188610329 發(fā)表于 2022-9-13 17:51
t = byte & 0x80>>i;
從 這句, 以及你的結論看, 你完全沒有理解 變量和常量的關系, 以及 有符號數(shù)的 ...
censv 發(fā)表于 2022-9-12 21:35
你說的對,0x80就是128,永遠是正數(shù)。
在例子2中,字面量0x80被解釋為負數(shù),我認為是keil bug,你覺得呢 ...
wulin 發(fā)表于 2022-9-13 20:54
signed char a;
a = 0x80;
if (a != 0x80) led1 = 0;//這里if只判斷真假,哪來的正負判斷 ...
xuyaqi 發(fā)表于 2022-9-13 14:28
字面量0x80 作為 signed char 應該是 -128
censv 發(fā)表于 2022-9-13 12:03
如果我哪里不對,你可以提出來啊,不要一味指責
censv 發(fā)表于 2022-9-13 18:55
那我們再簡化一下,
當shift和result變量聲明為8位有符號類型
shift = 4;
188610329 發(fā)表于 2022-9-14 11:05
所以,我說你沒明白,什么叫 常量, 什么叫變量. 所以我讓你分步寫, 有助你理解.
result = 0x80 >> shif ...
188610329 發(fā)表于 2022-9-14 11:05
所以,我說你沒明白,什么叫 常量, 什么叫變量. 所以我讓你分步寫, 有助你理解.
result = 0x80 >> shif ...
censv 發(fā)表于 2022-9-14 12:40
關鍵點來了,0x80是常量不假,但也是整數(shù)。
而且關于移位運算符兩個要求操作數(shù)都必須為整數(shù),并且遵循整 ...
censv 發(fā)表于 2022-9-14 12:50
不是不分步,是我不懂你的分布是什么意思?
我以為你是嫌代碼多懶得看,我只好把代碼再精簡一下
發(fā)表于 2022-9-14 15:35
你精簡的結果已經很明顯了,沒有人能看懂你在說什么東西。
你要把每一步都仔細寫出來,大家才能知道你 ...
188610329 發(fā)表于 2022-9-14 13:20
察看編譯后的 匯編代碼是 Ctrl + F5
我還是那句話, 常量是不能 做移位的,必須有個載體。
censv 發(fā)表于 2022-9-14 19:52
非常感謝,通過看了反匯編我明白了。就是keil沒遵循c標準。
只是你說常量不能移位,我不認為是正確的 ...
188610329 發(fā)表于 2022-9-14 20:18
唉……,好吧,你覺得常量可以移位,就可以移位吧。
0x80 >> shift; 是不能獨立成語句的。
0x80 >>= ...
188610329 發(fā)表于 2022-9-14 20:18
唉……,好吧,你覺得常量可以移位,就可以移位吧。
0x80 >> shift; 是不能獨立成語句的。
0x80 >>= ...
censv 發(fā)表于 2022-9-14 22:28
常量當然有類型,字面量常量0x80永遠是正的128。
咱們撇過以上分歧不談,你認為下一行語句執(zhí)行后resul ...
發(fā)表于 2022-9-14 23:04
c語言的魅力就在于貼近機器
censv 發(fā)表于 2022-9-14 22:31
0x80 >> shift; 是不能獨立成語句的。
result >> shift; 也是不能獨立成語句的。
188610329 發(fā)表于 2022-9-15 10:52
你確定, 這樣寫不會出 275 警告?
你 Ctril +F5 看過編譯結果么?
你知不知道, 這兩句, 壓根出不了 匯編 ...
名字不是重點 發(fā)表于 2022-9-24 16:10
一瓶農夫山泉,在超市里買2塊錢,同樣一瓶水,同樣的容量,當它在迪廳里,可是會被賣到20塊錢。
場景地點 ...
人中狼 發(fā)表于 2022-9-24 21:12
怎么覺得討論的有點偏了,0x80的十進制是什么數(shù),首先要定義0x80的數(shù)據(jù)類型,在編程里,十六進制數(shù)和二進制 ...
zmc419 發(fā)表于 2022-9-24 21:29
看你定義,是有符合還是無符號。 signed char 與un signed char
censv 發(fā)表于 2022-9-26 15:52
那你認為0x80是什么類型?
人中狼 發(fā)表于 2022-9-26 16:08
你這個問法就真的偏了,要先定義類型,再討論具體含義,而不是隨意討論,那樣沒結果的,這是很直接的因果 ...
censv 發(fā)表于 2022-9-26 18:00
那你的意思是常量沒有類型?
人中狼 發(fā)表于 2022-9-26 18:58
不是常量沒有類型,而是類型不分常量或變量,否則有符號數(shù)怎么和負數(shù)常量做比較
censv 發(fā)表于 2022-9-26 18:00
那你的意思是常量沒有類型?
censv 發(fā)表于 2022-9-14 06:15
if當然是判斷真假,a != x80,因為a表示為負數(shù),不等于正數(shù)的字面量0x80,是對的。
但在第二個例子,0x8 ...
xxxevery 發(fā)表于 2022-9-29 17:02
樓主不是偏了,是有探究精神,但還需要多多努力學習,我們大家都是這樣走過來的。對于0x80,我們回歸本質在 ...
pdwdzz 發(fā)表于 2022-9-30 01:55
我送樓主個例子,相信樓主會更加堅信自己的見解,keil有bug,這么多年無人發(fā)現(xiàn)?
void main(void)
{
188610329 發(fā)表于 2022-9-12 11:49
正負數(shù),是人為劃定的一個范圍,你要判斷正負,也是應該用if(a
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |