久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2409|回復: 17
收起左側

51單片機C語言if判斷語句執行問題

  [復制鏈接]
ID:398219 發表于 2023-5-18 21:52 | 顯示全部樓層 |閱讀模式
程序大概意思:稱重傳感器連續發送重量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

回復

使用道具 舉報

ID:94031 發表于 2023-5-19 05:53 | 顯示全部樓層
做判斷數據類型要一致,a,b,c要設置成同一數據類型。
回復

使用道具 舉報

ID:213173 發表于 2023-5-19 07:07 | 顯示全部樓層
unsigned char a=14,b=10;//上限14,下限10
if(c>b && c<a)
回復

使用道具 舉報

ID:227393 發表于 2023-5-19 08:38 來自手機 | 顯示全部樓層
加小括號,if((a>c)&&(a<b))
回復

使用道具 舉報

ID:123289 發表于 2023-5-19 08:51 | 顯示全部樓層
a=14,b=10,你要求a<b,不知道是如何想的。
a>14 && a<10,你能找出這樣的a嗎。
暈……
回復

使用道具 舉報

ID:824490 發表于 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;
回復

使用道具 舉報

ID:161164 發表于 2023-5-19 09:37 | 顯示全部樓層
你看看你寫的是甚么
a是上限,b是下限,c是變量
if(a>c && a<b) >>> if(上限>變量 && 上限<下限)
if(a>14 && a<10) >>> if(上限>14 && 上限<10)
回復

使用道具 舉報

ID:398219 發表于 2023-5-19 11:27 | 顯示全部樓層
yzwzfyz 發表于 2023-5-19 08:51
a=14,b=10,你要求a14 && a

不好意思,打錯了。
意思是a>c>b,判斷c中間值。
回復

使用道具 舉報

ID:398219 發表于 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中間值。
回復

使用道具 舉報

ID:77589 發表于 2023-5-19 14:15 | 顯示全部樓層
wulin 發表于 2023-5-19 07:07
unsigned char a=14,b=10;//上限14,下限10
if(c>b && c

這才是對的
回復

使用道具 舉報

ID:398219 發表于 2023-5-19 15:02 | 顯示全部樓層
if((count1 > Ud) && (count1 < Ul))
目前就卡在這里,請大神幫忙看看這個判斷這里。
把Ud和Ul換成數字,就正常了。換成變量就不行了

【STC15W408AS】物流稱重項目.rar

103.17 KB, 下載次數: 5

回復

使用道具 舉報

ID:908826 發表于 2023-5-19 22:19 | 顯示全部樓層
herui2128 發表于 2023-5-19 15:02
if((count1 > Ud) && (count1 < Ul))
目前就卡在這里,請大神幫忙看看這個判斷這里。
把Ud和Ul換成數字, ...

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

使用道具 舉報

ID:398219 發表于 2023-5-20 07:36 | 顯示全部樓層
13205495918 發表于 2023-5-19 22:19
你這代碼真不能運行嗎?我在Lightly編譯器上跑的沒問題哎

能下載進單片機,進行稱重數據顯示,但是不能進入判斷分支進行數量計數。在判斷那里把變量改成數字就正常了。
回復

使用道具 舉報

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

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

使用道具 舉報

ID:398219 發表于 2023-5-21 08:59 | 顯示全部樓層
ydatou 發表于 2023-5-20 10:40
判斷這部分是沒有問題的。
數組越界會造成這種現象。
你代碼編譯后有大量警告,你先把這部分問題解決 ...

收到,謝謝。明天仔細去看看。
回復

使用道具 舉報

ID:398219 發表于 2023-5-22 10:41 | 顯示全部樓層
ydatou 發表于 2023-5-20 10:40
判斷這部分是沒有問題的。
數組越界會造成這種現象。
你代碼編譯后有大量警告,你先把這部分問題解決 ...

謝謝,問題已經找到了,就是路組越界了。
回復

使用道具 舉報

ID:526543 發表于 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時正確判斷為滿足上下限條件。

請注意,根據具體的需求和數據類型,你可能需要調整閾值和判斷條件,確保它們適合你的應用場景。
回復

使用道具 舉報

ID:1074206 發表于 2023-5-22 14:54 | 顯示全部樓層
1、數組不能越界
2、邏輯要符合常理
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人狠狠干 | 久久亚洲国产 | 99re在线视频观看 | 精品成人一区 | 综合二区 | 狠狠亚洲| 精品在线一区二区三区 | 狠狠操婷婷 | www日| 国产一区二区欧美 | 亚洲精品国产第一综合99久久 | 久久亚洲一区二区三区四区 | 欧美日韩综合 | 精品久久伊人 | 午夜精品久久久 | 欧美一级免费看 | 一级片在线免费播放 | 波多野结衣二区 | 欧美4p| 成人欧美一区二区三区黑人孕妇 | 久久久夜色精品亚洲 | 国产高清一区二区三区 | 亚洲一区国产精品 | 麻豆一区一区三区四区 | 久久亚洲国产精品日日av夜夜 | 欧美高清性xxxxhdvideosex | 日韩有码一区 | 成人欧美一区二区 | 中文字幕日韩一区二区 | a免费视频 | 国产激情视频在线 | 久久久久久国产精品 | 天天夜碰日日摸日日澡 | 国产综合一区二区 | 桃色五月 | 亚洲高清在线观看 | 国产蜜臀 | 天天天久久久 | 久久精品欧美电影 | 男女羞羞视频在线免费观看 | 欧美jizzhd精品欧美巨大免费 |