找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 837|回復(fù): 13
收起左側(cè)

c語言位移問題

[復(fù)制鏈接]
ID:281889 發(fā)表于 2025-4-10 21:38 | 顯示全部樓層 |閱讀模式
b是1向左移動1位為什么變成7?d是1向左移動16位為什么變成0?
51hei圖片_20250410213754.png
回復(fù)

使用道具 舉報(bào)

ID:227393 發(fā)表于 2025-4-11 05:10 來自觸屏版 | 顯示全部樓層
放while(1)前面就可以了,不然一直再左移
回復(fù)

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2025-4-11 07:53 | 顯示全部樓層
你有沒有注意,定義的b是long,監(jiān)視窗口里面的是char?
事實(shí)上每次重新編譯之后,變量地址都不一定一樣,所以穩(wěn)妥之下,要刪除重新加入。這個(gè)是KEIL的一個(gè)BUG吧。就是說監(jiān)視里面的那個(gè)b,根本不是你定的那個(gè)b,所以等于啥也沒有意義。
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)

ID:878061 發(fā)表于 2025-4-11 08:27 | 顯示全部樓層
我?guī)湍阍嚵讼,結(jié)果很不一樣
51hei.jpg
回復(fù)

使用道具 舉報(bào)

ID:192020 發(fā)表于 2025-4-11 09:19 | 顯示全部樓層
點(diǎn)運(yùn)行了嗎?或者設(shè)斷點(diǎn)了嗎
回復(fù)

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2025-4-11 13:13 | 顯示全部樓層
huashanhui20 發(fā)表于 2025-4-11 08:27
我?guī)湍阍嚵讼拢Y(jié)果很不一樣

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:281889 發(fā)表于 2025-4-11 21:43 | 顯示全部樓層

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2025-4-12 12:30 | 顯示全部樓層

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2025-4-26 18:33 | 顯示全部樓層

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

使用道具 舉報(bào)

ID:879809 發(fā)表于 2025-4-29 17:51 | 顯示全部樓層
xiaobendan001 發(fā)表于 2025-4-26 18:33
在KEILC51里面,應(yīng)該加類型轉(zhuǎn)換,否則就不行。其他的我沒試過,沒有條件

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

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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