找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 583|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

c語(yǔ)言位移問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
b是1向左移動(dòng)1位為什么變成7?d是1向左移動(dòng)16位為什么變成0?

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

51hei圖片_20250410213754.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:227393 發(fā)表于 2025-4-11 05:10 來(lái)自手機(jī) | 只看該作者
放while(1)前面就可以了,不然一直再左移
回復(fù)

使用道具 舉報(bào)

板凳
ID:1109793 發(fā)表于 2025-4-11 07:53 | 只看該作者
你有沒(méi)有注意,定義的b是long,監(jiān)視窗口里面的是char?
事實(shí)上每次重新編譯之后,變量地址都不一定一樣,所以穩(wěn)妥之下,要?jiǎng)h除重新加入。這個(gè)是KEIL的一個(gè)BUG吧。就是說(shuō)監(jiān)視里面的那個(gè)b,根本不是你定的那個(gè)b,所以等于啥也沒(méi)有意義。
d為何為0,原因是你括弧里面的1,默認(rèn)的是char的,左移16次,當(dāng)然是0,實(shí)際上8次也是0。你改成這樣
d = ((long)1<<16);
就是你想要的0x10000了。
回復(fù)

使用道具 舉報(bào)

地板
ID:68189 發(fā)表于 2025-4-11 08:18 | 只看該作者
                b = (1UL<<1);
                c = (1UL<<2);
                d = (1UL<<16);
回復(fù)

使用道具 舉報(bào)

5#
ID:878061 發(fā)表于 2025-4-11 08:27 | 只看該作者
我?guī)湍阍嚵讼,結(jié)果很不一樣

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

51hei.jpg
回復(fù)

使用道具 舉報(bào)

6#
ID:192020 發(fā)表于 2025-4-11 09:19 | 只看該作者
點(diǎn)運(yùn)行了嗎?或者設(shè)斷點(diǎn)了嗎
回復(fù)

使用道具 舉報(bào)

7#
ID:1109793 發(fā)表于 2025-4-11 13:13 | 只看該作者
huashanhui20 發(fā)表于 2025-4-11 08:27
我?guī)湍阍嚵讼拢Y(jié)果很不一樣

你這很明顯不是C51的編譯器
回復(fù)

使用道具 舉報(bào)

8#
ID:879809 發(fā)表于 2025-4-11 16:48 | 只看該作者
c編譯器常量如果不加U、L等修飾符,默認(rèn)是int類型的,而C51的int型是16位的,1<<16毫無(wú)疑問(wèn)的就是0。
回復(fù)

使用道具 舉報(bào)

9#
ID:281889 發(fā)表于 2025-4-11 21:43 | 只看該作者

這樣可以,感謝
回復(fù)

使用道具 舉報(bào)

10#
ID:281889 發(fā)表于 2025-4-11 21:51 | 只看該作者
xiaobendan001 發(fā)表于 2025-4-11 07:53
你有沒(méi)有注意,定義的b是long,監(jiān)視窗口里面的是char?
事實(shí)上每次重新編譯之后,變量地址都不一定一樣,所 ...

感謝,按照你說(shuō)的可以了
回復(fù)

使用道具 舉報(bào)

11#
ID:1109793 發(fā)表于 2025-4-12 12:30 | 只看該作者

這個(gè)寫法是在哪兒看到的?
回復(fù)

使用道具 舉報(bào)

12#
ID:879809 發(fā)表于 2025-4-26 18:00 | 只看該作者
xiaobendan001 發(fā)表于 2025-4-11 07:53
你有沒(méi)有注意,定義的b是long,監(jiān)視窗口里面的是char?
事實(shí)上每次重新編譯之后,變量地址都不一定一樣,所 ...

你自己試試1<<8好不好用,這個(gè)位移是編譯器在編譯期間計(jì)算出來(lái)的,哪來(lái)的什么八位?
回復(fù)

使用道具 舉報(bào)

13#
ID:1109793 發(fā)表于 2025-4-26 18:33 | 只看該作者

在KEILC51里面,應(yīng)該加類型轉(zhuǎn)換,否則就不行。其他的我沒(méi)試過(guò),沒(méi)有條件
回復(fù)

使用道具 舉報(bào)

14#
ID:879809 發(fā)表于 2025-4-29 17:51 | 只看該作者
xiaobendan001 發(fā)表于 2025-4-26 18:33
在KEILC51里面,應(yīng)該加類型轉(zhuǎn)換,否則就不行。其他的我沒(méi)試過(guò),沒(méi)有條件

我說(shuō)的就是Keil C51,你不去試試怎么知道?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表