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

QQ登錄

只需一步,快速開(kāi)始

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

C語(yǔ)言 為什么判斷同一個(gè)數(shù),switch不能判對(duì),而if能呢

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
問(wèn)題如圖,IR_Val的定義是uint32_t,case的程序是stm8能用的,我現(xiàn)在要移到stm32上,keil給我判錯(cuò),請(qǐng)問(wèn)有知道這是什么問(wèn)題嗎?先謝謝大家

1122.png (20.66 KB, 下載次數(shù): 43)

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

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2023-11-3 18:22 | 只看該作者
可以看一下生成的匯編代碼。
回復(fù)

使用道具 舉報(bào)

板凳
ID:883242 發(fā)表于 2023-11-3 18:50 | 只看該作者
在MDK中,右鍵項(xiàng)目,彈出options for target,然后在c/c++標(biāo)簽中的Misc Controls里面加上“--asm”就可以輸出匯編文件了,在obj目錄里面的s文件就是c語(yǔ)言對(duì)應(yīng)的匯編。
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2023-11-3 18:54 | 只看該作者
switch()括號(hào)中只可以允許int、char、bool、enum類(lèi)型,別的類(lèi)型不可以。
回復(fù)

使用道具 舉報(bào)

5#
ID:883242 發(fā)表于 2023-11-3 19:00 | 只看該作者
wulin 發(fā)表于 2023-11-3 18:54
switch()括號(hào)中只可以允許int、char、bool、enum類(lèi)型,別的類(lèi)型不可以。

但是你說(shuō)的跟樓主描述的完全相反,uint32_t在STM8編譯器里面是long,不符合你的要求,但是人家好用。在MDK里面是unsigned int類(lèi)型,樓主的數(shù)據(jù)最高位都是0,也就是說(shuō)都是正數(shù),與int類(lèi)型完全等效。
回復(fù)

使用道具 舉報(bào)

6#
ID:388929 發(fā)表于 2023-11-4 15:36 | 只看該作者
Hephaestus 發(fā)表于 2023-11-3 18:50
在MDK中,右鍵項(xiàng)目,彈出options for target,然后在c/c++標(biāo)簽中的Misc Controls里面加上“--asm”就可以輸 ...

大佬,我就學(xué)了下下匯編。。。好多年了,現(xiàn)在是看不懂的咯

1.png (89.47 KB, 下載次數(shù): 52)

1.png

2.png (132.27 KB, 下載次數(shù): 46)

2.png
回復(fù)

使用道具 舉報(bào)

7#
ID:388929 發(fā)表于 2023-11-4 15:53 | 只看該作者
難道是CASE只能是16位???
回復(fù)

使用道具 舉報(bào)

8#
ID:883242 發(fā)表于 2023-11-4 16:13 | 只看該作者
billaj 發(fā)表于 2023-11-4 15:53
難道是CASE只能是16位???

你貼的代碼確實(shí)只比較了低16位,也可能高16位都一樣,前面另外判斷了,代碼不全不能確定。
回復(fù)

使用道具 舉報(bào)

9#
ID:382454 發(fā)表于 2023-11-4 16:37 | 只看該作者
應(yīng)該可以的,可能你這個(gè)數(shù)有點(diǎn)問(wèn)題,,char 還是int還是浮點(diǎn)型。也可以把這幾句單獨(dú)在調(diào)試一下,就一目了然了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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