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

QQ登錄

只需一步,快速開始

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

51單片機(jī)C語(yǔ)言if判斷語(yǔ)句執(zhí)行問題

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:398219 發(fā)表于 2023-5-18 21:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
程序大概意思:稱重傳感器連續(xù)發(fā)送重量c(假設(shè)重量是12),然后進(jìn)行重量的上下限判斷 ,滿足條件后進(jìn)行下一步。

unsigned int Ul=15,Ud=8;//上限14,下限10
unsigned int count1;//稱重值
假設(shè)count1是12,在程序中進(jìn)行上下限判斷
if((count1 > Ud) && (count1 < Ul))
{
}
在程序中老是進(jìn)入不到判斷條件,將程序改成數(shù)字就正常了,求大神指導(dǎo)一下。
if((count1 > 8) && (count1 < 15))
{
}


【STC15W408AS】物流稱重項(xiàng)目.rar

103.17 KB, 下載次數(shù): 3

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

使用道具 舉報(bào)

沙發(fā)
ID:94031 發(fā)表于 2023-5-19 05:53 | 只看該作者
做判斷數(shù)據(jù)類型要一致,a,b,c要設(shè)置成同一數(shù)據(jù)類型。
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2023-5-19 07:07 | 只看該作者
unsigned char a=14,b=10;//上限14,下限10
if(c>b && c<a)
回復(fù)

使用道具 舉報(bào)

地板
ID:227393 發(fā)表于 2023-5-19 08:38 來自觸屏版 | 只看該作者
加小括號(hào),if((a>c)&&(a<b))
回復(fù)

使用道具 舉報(bào)

5#
ID:123289 發(fā)表于 2023-5-19 08:51 | 只看該作者
a=14,b=10,你要求a<b,不知道是如何想的。
a>14 && a<10,你能找出這樣的a嗎。
暈……
回復(fù)

使用道具 舉報(bào)

6#
ID:824490 發(fā)表于 2023-5-19 09:11 | 只看該作者
一個(gè)數(shù)不能大于14的同時(shí)又小于10;所以這里是邏輯錯(cuò)亂了!
if(a>c && a<b)//是c<a<b?這里的實(shí)際邏輯必需是b>c,否則if永不成立。

&& 是多個(gè)條件同時(shí)判斷,只要有一個(gè)“假”總結(jié)果就“假”,是“乘”的關(guān)系:有0出0,全1出1;
||  是多個(gè)條件同時(shí)判斷,只要有一個(gè)“真”總結(jié)果就“真”,是“加”的關(guān)系:有1出1,全0出0;
回復(fù)

使用道具 舉報(bào)

7#
ID:161164 發(fā)表于 2023-5-19 09:37 | 只看該作者
你看看你寫的是甚么
a是上限,b是下限,c是變量
if(a>c && a<b) >>> if(上限>變量 && 上限<下限)
if(a>14 && a<10) >>> if(上限>14 && 上限<10)
回復(fù)

使用道具 舉報(bào)

8#
ID:398219 發(fā)表于 2023-5-19 11:27 | 只看該作者
yzwzfyz 發(fā)表于 2023-5-19 08:51
a=14,b=10,你要求a14 && a

不好意思,打錯(cuò)了。
意思是a>c>b,判斷c中間值。
回復(fù)

使用道具 舉報(bào)

9#
ID:398219 發(fā)表于 2023-5-19 11:28 | 只看該作者
lkc8210 發(fā)表于 2023-5-19 09:37
你看看你寫的是甚么
a是上限,b是下限,c是變量
if(a>c && a>> if(上限>變量 && 上限14 && a>> if(上限>1 ...

打錯(cuò)了。
不好意思,打錯(cuò)了。
意思是a>c>b,判斷c中間值。
回復(fù)

使用道具 舉報(bào)

10#
ID:77589 發(fā)表于 2023-5-19 14:15 | 只看該作者
wulin 發(fā)表于 2023-5-19 07:07
unsigned char a=14,b=10;//上限14,下限10
if(c>b && c

這才是對(duì)的
回復(fù)

使用道具 舉報(bào)

11#
ID:398219 發(fā)表于 2023-5-19 15:02 | 只看該作者
if((count1 > Ud) && (count1 < Ul))
目前就卡在這里,請(qǐng)大神幫忙看看這個(gè)判斷這里。
把Ud和Ul換成數(shù)字,就正常了。換成變量就不行了

【STC15W408AS】物流稱重項(xiàng)目.rar

103.17 KB, 下載次數(shù): 5

回復(fù)

使用道具 舉報(bào)

12#
ID:908826 發(fā)表于 2023-5-19 22:19 | 只看該作者
herui2128 發(fā)表于 2023-5-19 15:02
if((count1 > Ud) && (count1 < Ul))
目前就卡在這里,請(qǐng)大神幫忙看看這個(gè)判斷這里。
把Ud和Ul換成數(shù)字, ...

你這代碼真不能運(yùn)行嗎?我在Lightly編譯器上跑的沒問題哎
回復(fù)

使用道具 舉報(bào)

13#
ID:398219 發(fā)表于 2023-5-20 07:36 | 只看該作者
13205495918 發(fā)表于 2023-5-19 22:19
你這代碼真不能運(yùn)行嗎?我在Lightly編譯器上跑的沒問題哎

能下載進(jìn)單片機(jī),進(jìn)行稱重?cái)?shù)據(jù)顯示,但是不能進(jìn)入判斷分支進(jìn)行數(shù)量計(jì)數(shù)。在判斷那里把變量改成數(shù)字就正常了。
回復(fù)

使用道具 舉報(bào)

14#
ID:1073939 發(fā)表于 2023-5-20 10:40 | 只看該作者
herui2128 發(fā)表于 2023-5-20 07:36
能下載進(jìn)單片機(jī),進(jìn)行稱重?cái)?shù)據(jù)顯示,但是不能進(jìn)入判斷分支進(jìn)行數(shù)量計(jì)數(shù)。在判斷那里把變量改成數(shù)字就正常 ...
在判斷那里把變量改成數(shù)字就正常了。

判斷這部分是沒有問題的。
數(shù)組越界會(huì)造成這種現(xiàn)象。
你代碼編譯后有大量警告,你先把這部分問題解決了,說不定問題就解決了。
回復(fù)

使用道具 舉報(bào)

15#
ID:398219 發(fā)表于 2023-5-21 08:59 | 只看該作者
ydatou 發(fā)表于 2023-5-20 10:40
判斷這部分是沒有問題的。
數(shù)組越界會(huì)造成這種現(xiàn)象。
你代碼編譯后有大量警告,你先把這部分問題解決 ...

收到,謝謝。明天仔細(xì)去看看。
回復(fù)

使用道具 舉報(bào)

16#
ID:398219 發(fā)表于 2023-5-22 10:41 | 只看該作者
ydatou 發(fā)表于 2023-5-20 10:40
判斷這部分是沒有問題的。
數(shù)組越界會(huì)造成這種現(xiàn)象。
你代碼編譯后有大量警告,你先把這部分問題解決 ...

謝謝,問題已經(jīng)找到了,就是路組越界了。
回復(fù)

使用道具 舉報(bào)

17#
ID:526543 發(fā)表于 2023-5-22 13:27 | 只看該作者
根據(jù)你提供的代碼和描述,我注意到一個(gè)潛在的問題可能導(dǎo)致判斷條件不滿足的情況。

在你的代碼中,你定義了Ul和Ud作為上限和下限的閾值,類型為unsigned int。然后,在判斷條件中,你使用這些變量進(jìn)行比較。

然而,注意到你給出的判斷條件是(count1 > Ud) && (count1 < Ul),這可能導(dǎo)致問題。因?yàn)閡nsigned int類型的變量是無符號(hào)整數(shù)類型,所以當(dāng)count1為12時(shí),它既不大于8也不小于15,因?yàn)樵跓o符號(hào)整數(shù)類型中,不允許出現(xiàn)負(fù)數(shù)。

解決這個(gè)問題的方法是修改判斷條件為(count1 >= Ud) && (count1 <= Ul),使用大于等于和小于等于的比較操作符,確保邊界值也被包括在內(nèi)。
unsigned int Ul = 15, Ud = 8;  // 上限14,下限10
unsigned int count1;  // 稱重值

// ...

if ((count1 >= Ud) && (count1 <= Ul))
{
    // 滿足上下限條件,執(zhí)行下一步操作
}
這樣修改后,判斷條件將包括邊界值,并在count1為12時(shí)正確判斷為滿足上下限條件。

請(qǐng)注意,根據(jù)具體的需求和數(shù)據(jù)類型,你可能需要調(diào)整閾值和判斷條件,確保它們適合你的應(yīng)用場(chǎng)景。
回復(fù)

使用道具 舉報(bào)

18#
ID:1074206 發(fā)表于 2023-5-22 14:54 | 只看該作者
1、數(shù)組不能越界
2、邏輯要符合常理
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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