找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C語言if語句不滿足條件執(zhí)行 其它怎么寫?附代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:101869 發(fā)表于 2021-4-15 15:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
10黑幣
   while(1)
                      {  {if (sw1_in==0)//狀態(tài)1
                          A=2;
                          TR0=1;}
                        {if (sw1_in==0&&sw2_in==0)//狀態(tài)2
                          A=4;
                          TR0=1;}
              {if (sw1_in==1&&sw2_in==1)//狀態(tài)3
                          A=10;
                          TR0=1;}
                         break; }         
現(xiàn)在問題是為什么沒有滿足狀態(tài)2  卻執(zhí)行了狀態(tài)1 狀態(tài)1也沒有滿足啊   我只是sw2_in輸入了低電平  我想這幾個條件都沒滿足  去執(zhí)行另一個任務(wù)下面怎么寫啊    小白一枚特來求助

最佳答案

查看完整內(nèi)容

你的大括號有問題,if語句的括號不是你這樣加的.......還有,這種常量判斷用switch更好,判斷好壞的可以在switch里面寫: while(1) { switch(sw1_in) { case 0: if(sw2_in==0) { xxxxxxxxx; } else { xxxxxxxxx; } break; case 1: if(sw2_in==0) { xxxxxxxxx; } else { xxxxxxxxx; } ...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:569113 發(fā)表于 2021-4-15 15:11 | 只看該作者
本帖最后由 DSFGSF 于 2021-4-16 10:35 編輯

你的大括號有問題,if語句的括號不是你這樣加的.......還有,這種常量判斷用switch更好,判斷好壞的可以在switch里面寫:
while(1)
{
  switch(sw1_in)
  {
      case 0:
      if(sw2_in==0)
     {
          xxxxxxxxx;
      }
      else
     {
          xxxxxxxxx;
     }
    break;
    case 1:
    if(sw2_in==0)
   {
        xxxxxxxxx;
    }
    else
   {
        xxxxxxxxx;
   }
   break;
  }
}
回復(fù)

使用道具 舉報

板凳
ID:584814 發(fā)表于 2021-4-15 17:09 | 只看該作者
進Main之后首先要初始化系統(tǒng),比如在循環(huán)外先將 sw1_in=1 試試。
回復(fù)

使用道具 舉報

地板
ID:894154 發(fā)表于 2021-4-15 17:53 | 只看該作者
我看你的程序花括號有問題吧,還有你的while(1)循環(huán)里面為什么會放break???核對一下:
while(1)
    {  
      if(sw1_in==0)//狀態(tài)1
       {
          A=2;
          TR0=1;
       }
      if(sw1_in==0&&sw2_in==0)//狀態(tài)2
       {
          A=4;
          TR0=1;
       }
      if(sw1_in==1&&sw2_in==1)//狀態(tài)3
       {
          A=10;
          TR0=1;
       }
       break; //這里如果放break;程序判斷三次之后就跳出循環(huán)了
    }
回復(fù)

使用道具 舉報

5#
ID:101869 發(fā)表于 2021-4-15 21:29 | 只看該作者
ANT1987 發(fā)表于 2021-4-15 17:53
我看你的程序花括號有問題吧,還有你的while(1)循環(huán)里面為什么會放break???核對一下:
while(1)
    ...

這是一個檢測  檢測完要退出去的  如果不加退出  就一直死在這里了   前面還有條件呢  這個程序就是按下按鍵檢測幾個IO的狀態(tài)  
回復(fù)

使用道具 舉報

6#
ID:824490 發(fā)表于 2021-4-15 22:20 | 只看該作者
如果能確定要判斷的值(多個),就用switch。。。case
如果確定要判斷的值不等于某值,就用 if (regx != value)
回復(fù)

使用道具 舉報

7#
ID:743654 發(fā)表于 2021-4-16 08:55 | 只看該作者
用 if else if else
if(條件1)
        語句1;
else if(條件2)
        語句2;
else (條件3)
        語句3;
先判斷條件1,條件1不滿足,再去判斷條件2,條件2不滿足,再判斷條件3,以此類推
回復(fù)

使用道具 舉報

8#
ID:743654 發(fā)表于 2021-4-16 08:59 | 只看該作者
或者用switch case,比較直觀

switch(表達式){
    case 整型數(shù)值1: 語句 1,break;
    case 整型數(shù)值2: 語句 2,break;
    ......
    case 整型數(shù)值n: 語句 n,break;
    default: 語句 n+1,break;
}
回復(fù)

使用道具 舉報

9#
ID:332214 發(fā)表于 2021-4-16 09:16 | 只看該作者
首先 你這邊確定狀態(tài)1,2,3是不是互斥,如果是互斥的那就用上if elseif ,而且判斷條件里就要有sw1_in&&sw2_in總共有四種可能,什么狀態(tài)下執(zhí)行什么。還是說狀態(tài)之間是獨立的,你現(xiàn)在的語法是狀態(tài)2條件滿足,狀態(tài)1 會先執(zhí)行。
回復(fù)

使用道具 舉報

10#
ID:101869 發(fā)表于 2021-4-16 10:07 來自手機 | 只看該作者
cheney03 發(fā)表于 2021-4-16 08:59
或者用switch case,比較直觀

switch(表達式){

這是按下按鍵后檢測幾個IO的電平  switch括號里面的表達式寫什么?日出我也想怎么寫但是  這個不是次數(shù)之類的變量啊  求解答
回復(fù)

使用道具 舉報

11#
ID:101869 發(fā)表于 2021-4-16 10:19 來自手機 | 只看該作者
這是一個水位檢測的程序 ,我只是先用兩個水位試試,最終是四個水位探頭,由低到高排列水位1.2.3.4檢測出水位信號后發(fā)送遙控信號(在水位幾就閃幾次)由于水位傳感器的排列 所以正常的水位信號是1234連續(xù)的  如果2號探頭壞掉  在水位到達3號位置時會只有1.3出現(xiàn)低電平所以需要報警提示有探頭出現(xiàn)問題  我就想要這個效果
回復(fù)

使用道具 舉報

12#
ID:301978 發(fā)表于 2021-4-16 10:30 | 只看該作者
你的狀態(tài)2包括狀態(tài)1的情況,話句話說,(sw1_in==0&&sw2_in==0)
                                                       (sw1_in==0&&sw2_in==1)都會導(dǎo)致執(zhí)行(sw1_in==0)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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