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

QQ登錄

只需一步,快速開始

帖子
查看: 891|回復(fù): 15
收起左側(cè)

C語言IF語句的條件判斷問題

  [復(fù)制鏈接]
ID:709761 發(fā)表于 2025-4-29 16:50 | 顯示全部樓層 |閱讀模式
else if (38.1<=tw<=39)和else if (38.1<=tw&&tw<=39) 一樣嗎
回復(fù)

使用道具 舉報(bào)

ID:879809 發(fā)表于 2025-4-29 22:35 | 顯示全部樓層
前面的寫法顯然是錯(cuò)誤的,后面的對(duì)。
回復(fù)

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2025-4-30 07:24 | 顯示全部樓層
一樣的吧,但是前邊的能過編譯嗎?
回復(fù)

使用道具 舉報(bào)

ID:709761 發(fā)表于 2025-4-30 11:22 | 顯示全部樓層
xiaobendan001 發(fā)表于 2025-4-30 07:24
一樣的吧,但是前邊的能過編譯嗎?

能編譯通過
回復(fù)

使用道具 舉報(bào)

ID:1146851 發(fā)表于 2025-4-30 13:44 | 顯示全部樓層
Python中表達(dá)式 38.1<=tw<=39 是合法的語法,它會(huì)按照我們的預(yù)期來判斷 tw 是否在 38.1 和 39 之間,但在 C、C++、Java 等語言中,表達(dá)式會(huì)先計(jì)算 38.1 <= tw,這個(gè)比較操作會(huì)返回一個(gè)布爾值 1 和 0,然后再將這個(gè)布爾值與 39 進(jìn)行比較
回復(fù)

使用道具 舉報(bào)

ID:328075 發(fā)表于 2025-4-30 13:55 | 顯示全部樓層
不知道條件的前提下,無法判斷對(duì)錯(cuò)吧
回復(fù)

使用道具 舉報(bào)

ID:108361 發(fā)表于 2025-4-30 14:08 | 顯示全部樓層
(38.1 <= tw) 會(huì)先計(jì)算,結(jié)果是一個(gè) 布爾值:0(假)或 1(真)。
然后再判斷這個(gè) 0 或 1 是否小于等于 39。
這顯然不是你想表達(dá)的邏輯
回復(fù)

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2025-4-30 16:44 | 顯示全部樓層
試了真能編譯過,不過6樓說的對(duì),是按先后順序運(yùn)算的。結(jié)果和右邊的是不一樣的。
回復(fù)

使用道具 舉報(bào)

ID:702600 發(fā)表于 2025-4-30 20:54 | 顯示全部樓層
不一樣
回復(fù)

使用道具 舉報(bào)

ID:702600 發(fā)表于 2025-4-30 20:55 | 顯示全部樓層
不一樣,后面的if語句永遠(yuǎn)都不會(huì)執(zhí)行
回復(fù)

使用道具 舉報(bào)

ID:1149928 發(fā)表于 2025-5-8 21:31 | 顯示全部樓層
不一樣,<=運(yùn)算是雙目運(yùn)算符,你左邊那個(gè)表達(dá)式不是和數(shù)學(xué)上的表達(dá)式一個(gè)意思,計(jì)算機(jī)會(huì)一步一步算,先算38.1<=tw,返回一個(gè)值,然后再算這個(gè)值和39的大小
回復(fù)

使用道具 舉報(bào)

ID:656634 發(fā)表于 2025-5-8 22:07 | 顯示全部樓層
不一樣,有優(yōu)先級(jí)問題
回復(fù)

使用道具 舉報(bào)

ID:65956 發(fā)表于 2025-5-9 08:30 | 顯示全部樓層
建議你else if ((38.1<=tw)&&(tw<=39)) 這樣寫就能保證不會(huì)因?yàn)閮?yōu)先計(jì)算問題出錯(cuò)
回復(fù)

使用道具 舉報(bào)

ID:1149962 發(fā)表于 2025-5-9 09:54 | 顯示全部樓層
最好還是用后面的
回復(fù)

使用道具 舉報(bào)

ID:1138534 發(fā)表于 2025-5-13 18:20 | 顯示全部樓層
這兩個(gè)寫法 不一樣,雖然它們的語義意圖是一樣的(都想表達(dá) “tw 在 38.1 到 39 之間”),但語法上只有一個(gè)是合法并且正確的。  ✅ 正確寫法: c 復(fù)制 編輯 else if (38.1 <= tw && tw <= 39) 這是 C 語言中判斷一個(gè)值 tw 是否在 [38.1, 39] 區(qū)間內(nèi)的標(biāo)準(zhǔn)寫法。  ❌ 錯(cuò)誤寫法: c 復(fù)制 編輯 else if (38.1 <= tw <= 39)  // ❌ 錯(cuò)誤 這個(gè)寫法雖然在數(shù)學(xué)中是合法的區(qū)間寫法(如:38.1 ≤ tw ≤ 39),但在 C 語言中它的解析方式不同,會(huì)導(dǎo)致錯(cuò)誤邏輯。
回復(fù)

使用道具 舉報(bào)

ID:1150877 發(fā)表于 2025-5-18 23:02 | 顯示全部樓層
完全不一樣,前面的程序能運(yùn)行嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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