欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: c語言位移問題 [打印本頁]

作者: 天空之城1920    時間: 2025-4-10 21:38
標題: c語言位移問題
b是1向左移動1位為什么變成7?d是1向左移動16位為什么變成0?

51hei圖片_20250410213754.png (22.25 KB, 下載次數: 0)

51hei圖片_20250410213754.png

作者: sgq657785    時間: 2025-4-11 05:10
放while(1)前面就可以了,不然一直再左移
作者: xiaobendan001    時間: 2025-4-11 07:53
你有沒有注意,定義的b是long,監視窗口里面的是char?
事實上每次重新編譯之后,變量地址都不一定一樣,所以穩妥之下,要刪除重新加入。這個是KEIL的一個BUG吧。就是說監視里面的那個b,根本不是你定的那個b,所以等于啥也沒有意義。
d為何為0,原因是你括弧里面的1,默認的是char的,左移16次,當然是0,實際上8次也是0。你改成這樣
d = ((long)1<<16);
就是你想要的0x10000了。
作者: wpppmlah    時間: 2025-4-11 08:18
                b = (1UL<<1);
                c = (1UL<<2);
                d = (1UL<<16);
作者: huashanhui20    時間: 2025-4-11 08:27
我幫你試了下,結果很不一樣

51hei.jpg (75.49 KB, 下載次數: 0)

51hei.jpg

作者: Graves    時間: 2025-4-11 09:19
點運行了嗎?或者設斷點了嗎
作者: xiaobendan001    時間: 2025-4-11 13:13
huashanhui20 發表于 2025-4-11 08:27
我幫你試了下,結果很不一樣

你這很明顯不是C51的編譯器
作者: rundstedt    時間: 2025-4-11 16:48
c編譯器常量如果不加U、L等修飾符,默認是int類型的,而C51的int型是16位的,1<<16毫無疑問的就是0。
作者: 天空之城1920    時間: 2025-4-11 21:43
wpppmlah 發表于 2025-4-11 08:18
b = (1UL

這樣可以,感謝
作者: 天空之城1920    時間: 2025-4-11 21:51
xiaobendan001 發表于 2025-4-11 07:53
你有沒有注意,定義的b是long,監視窗口里面的是char?
事實上每次重新編譯之后,變量地址都不一定一樣,所 ...

感謝,按照你說的可以了
作者: xiaobendan001    時間: 2025-4-12 12:30
wpppmlah 發表于 2025-4-11 08:18
b = (1UL

這個寫法是在哪兒看到的?
作者: rundstedt    時間: 2025-4-26 18:00
xiaobendan001 發表于 2025-4-11 07:53
你有沒有注意,定義的b是long,監視窗口里面的是char?
事實上每次重新編譯之后,變量地址都不一定一樣,所 ...

你自己試試1<<8好不好用,這個位移是編譯器在編譯期間計算出來的,哪來的什么八位?
作者: xiaobendan001    時間: 2025-4-26 18:33
rundstedt 發表于 2025-4-26 18:00
你自己試試1

在KEILC51里面,應該加類型轉換,否則就不行。其他的我沒試過,沒有條件
作者: rundstedt    時間: 2025-4-29 17:51
xiaobendan001 發表于 2025-4-26 18:33
在KEILC51里面,應該加類型轉換,否則就不行。其他的我沒試過,沒有條件

我說的就是Keil C51,你不去試試怎么知道?




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1