欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機C語言if判斷語句執行問題 [打印本頁]

作者: herui2128    時間: 2023-5-18 21:52
標題: 51單片機C語言if判斷語句執行問題
程序大概意思:稱重傳感器連續發送重量c(假設重量是12),然后進行重量的上下限判斷 ,滿足條件后進行下一步。

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


【STC15W408AS】物流稱重項目.rar

103.17 KB, 下載次數: 3


作者: xuyaqi    時間: 2023-5-19 05:53
做判斷數據類型要一致,a,b,c要設置成同一數據類型。
作者: wulin    時間: 2023-5-19 07:07
unsigned char a=14,b=10;//上限14,下限10
if(c>b && c<a)
作者: sgq657785    時間: 2023-5-19 08:38
加小括號,if((a>c)&&(a<b))
作者: yzwzfyz    時間: 2023-5-19 08:51
a=14,b=10,你要求a<b,不知道是如何想的。
a>14 && a<10,你能找出這樣的a嗎。
暈……

作者: 名字不是重點    時間: 2023-5-19 09:11
一個數不能大于14的同時又小于10;所以這里是邏輯錯亂了!
if(a>c && a<b)//是c<a<b?這里的實際邏輯必需是b>c,否則if永不成立。

&& 是多個條件同時判斷,只要有一個“假”總結果就“假”,是“乘”的關系:有0出0,全1出1;
||  是多個條件同時判斷,只要有一個“真”總結果就“真”,是“加”的關系:有1出1,全0出0;
作者: lkc8210    時間: 2023-5-19 09:37
你看看你寫的是甚么
a是上限,b是下限,c是變量
if(a>c && a<b) >>> if(上限>變量 && 上限<下限)
if(a>14 && a<10) >>> if(上限>14 && 上限<10)
作者: herui2128    時間: 2023-5-19 11:27
yzwzfyz 發表于 2023-5-19 08:51
a=14,b=10,你要求a14 && a

不好意思,打錯了。
意思是a>c>b,判斷c中間值。
作者: herui2128    時間: 2023-5-19 11:28
lkc8210 發表于 2023-5-19 09:37
你看看你寫的是甚么
a是上限,b是下限,c是變量
if(a>c && a>> if(上限>變量 && 上限14 && a>> if(上限>1 ...

打錯了。
不好意思,打錯了。
意思是a>c>b,判斷c中間值。
作者: Longan.Wang    時間: 2023-5-19 14:15
wulin 發表于 2023-5-19 07:07
unsigned char a=14,b=10;//上限14,下限10
if(c>b && c

這才是對的
作者: herui2128    時間: 2023-5-19 15:02
if((count1 > Ud) && (count1 < Ul))
目前就卡在這里,請大神幫忙看看這個判斷這里。
把Ud和Ul換成數字,就正常了。換成變量就不行了

【STC15W408AS】物流稱重項目.rar

103.17 KB, 下載次數: 5


作者: 13205495918    時間: 2023-5-19 22:19
herui2128 發表于 2023-5-19 15:02
if((count1 > Ud) && (count1 < Ul))
目前就卡在這里,請大神幫忙看看這個判斷這里。
把Ud和Ul換成數字, ...

你這代碼真不能運行嗎?我在Lightly編譯器上跑的沒問題哎
作者: herui2128    時間: 2023-5-20 07:36
13205495918 發表于 2023-5-19 22:19
你這代碼真不能運行嗎?我在Lightly編譯器上跑的沒問題哎

能下載進單片機,進行稱重數據顯示,但是不能進入判斷分支進行數量計數。在判斷那里把變量改成數字就正常了。
作者: ydatou    時間: 2023-5-20 10:40
herui2128 發表于 2023-5-20 07:36
能下載進單片機,進行稱重數據顯示,但是不能進入判斷分支進行數量計數。在判斷那里把變量改成數字就正常 ...
在判斷那里把變量改成數字就正常了。

判斷這部分是沒有問題的。
數組越界會造成這種現象。
你代碼編譯后有大量警告,你先把這部分問題解決了,說不定問題就解決了。
作者: herui2128    時間: 2023-5-21 08:59
ydatou 發表于 2023-5-20 10:40
判斷這部分是沒有問題的。
數組越界會造成這種現象。
你代碼編譯后有大量警告,你先把這部分問題解決 ...

收到,謝謝。明天仔細去看看。
作者: herui2128    時間: 2023-5-22 10:41
ydatou 發表于 2023-5-20 10:40
判斷這部分是沒有問題的。
數組越界會造成這種現象。
你代碼編譯后有大量警告,你先把這部分問題解決 ...

謝謝,問題已經找到了,就是路組越界了。
作者: 123456ZXC1    時間: 2023-5-22 13:27
根據你提供的代碼和描述,我注意到一個潛在的問題可能導致判斷條件不滿足的情況。

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

然而,注意到你給出的判斷條件是(count1 > Ud) && (count1 < Ul),這可能導致問題。因為unsigned int類型的變量是無符號整數類型,所以當count1為12時,它既不大于8也不小于15,因為在無符號整數類型中,不允許出現負數。

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

// ...

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

請注意,根據具體的需求和數據類型,你可能需要調整閾值和判斷條件,確保它們適合你的應用場景。
作者: kk17328    時間: 2023-5-22 14:54
1、數組不能越界
2、邏輯要符合常理




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1