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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3788|回復: 27
收起左側

為什么這個單片機程序不能使用if判斷

  [復制鏈接]
ID:613771 發表于 2019-9-19 20:27 | 顯示全部樓層 |閱讀模式
#include <reg52.h>

sbit led = P2^0;
sbit led2 = P2^1;
typedef unsigned int u16;        
typedef unsigned char u8;

void main(){

        u16 a = 1;
        if(a = 2){
                while(1){
                        led = 0 ;
                }

        }else{
                while(1){
                        led2 = 0 ;
                }
        }



}
回復

使用道具 舉報

ID:613771 發表于 2019-9-19 20:28 | 顯示全部樓層
單片機無論如何都會運行if里面的第一個循環,而不會判斷條件是真是假,不知道怎么回事
回復

使用道具 舉報

ID:613798 發表于 2019-9-19 21:21 | 顯示全部樓層
a = 2是賦值表達式,其值為2,是非零值,i所以if語句"()"內的表達式執行結果永遠為真。
回復

使用道具 舉報

ID:613798 發表于 2019-9-19 21:24 | 顯示全部樓層
a=2是賦值表達式,其值為2,是非零值,所以if中"()"內的表達式運行結果為真。所以執行第一個while語句。
回復

使用道具 舉報

ID:526314 發表于 2019-9-19 22:11 | 顯示全部樓層
改成if(a==2)
回復

使用道具 舉報

ID:235200 發表于 2019-9-20 00:21 | 顯示全部樓層
應該把if(a = 2)改為if(a == 2) 但根據程序a不可能會等于2,那么就只好執行else{
                while(1){
                        led2 = 0 ;
                }
這里是是個無限循環,一直使led2=0;不知道這樣的程序編了后要實現什么樣的功能?
回復

使用道具 舉報

ID:386381 發表于 2019-9-20 01:00 來自手機 | 顯示全部樓層
判斷應該用a==2,兩個等號,a=2一個等號是賦值
回復

使用道具 舉報

ID:110895 發表于 2019-9-20 01:19 | 顯示全部樓層
if(a==2) 就對了。
回復

使用道具 舉報

ID:213173 發表于 2019-9-20 07:15 | 顯示全部樓層
hellomcp 發表于 2019-9-19 20:28
單片機無論如何都會運行if里面的第一個循環,而不會判斷條件是真是假,不知道怎么回事

  if(a = 2)???難道編譯時沒有警告?
回復

使用道具 舉報

ID:613425 發表于 2019-9-20 08:39 | 顯示全部樓層
判斷應該用a==2,兩個等號,a=2一個等號是賦值
回復

使用道具 舉報

ID:456927 發表于 2019-9-20 09:00 | 顯示全部樓層
語法錯啦,改一下應該就好了
回復

使用道具 舉報

ID:601639 發表于 2019-9-20 09:36 | 顯示全部樓層
改成a==2,但是這個程序沒啥用啊,死循環出不來。
回復

使用道具 舉報

ID:470497 發表于 2019-9-20 10:02 | 顯示全部樓層
a = 2是賦值語句,則a值為2,是非零值,所以if語句表達式為真而運行第一個循環,判斷條件應該改為:if(a==2)
回復

使用道具 舉報

ID:452974 發表于 2019-9-20 13:20 | 顯示全部樓層
a = 2 是賦值語句,在一些編譯器中默認為真,如果希望程序運行,更改為a == 2 判斷語句即可。

和樓上們一樣,這個程序是干什么的,個人感覺像是學校試題,,

如果希望實現什么功能,要改的地方就稍稍多了
回復

使用道具 舉報

ID:71883 發表于 2019-9-20 14:41 | 顯示全部樓層
書寫格式錯誤
回復

使用道具 舉報

ID:149144 發表于 2019-9-20 15:32 | 顯示全部樓層
u16 a;
......

void main()
{
  while(1)
         {
           if(a == 2)
                {
                    led = 0 ;
                }   
          else
               {
                   led2 = 0 ;
               }
        }
}


回復

使用道具 舉報

ID:272119 發表于 2019-9-20 18:47 | 顯示全部樓層
wulin 發表于 2019-9-20 07:15
if(a = 2)???難道編譯時沒有警告?

會出警告,但不是報錯.
回復

使用道具 舉報

ID:613771 發表于 2019-9-22 18:37 | 顯示全部樓層
謝謝大家了,賦值用等于,對比用直等于
回復

使用道具 舉報

ID:254046 發表于 2019-10-9 10:36 | 顯示全部樓層
把if(a = 2)改為if(a == 2) 不知道還有其他程序嗎,a沒有自加 a++; a永遠不會=2吧
回復

使用道具 舉報

ID:621123 發表于 2019-10-9 15:38 | 顯示全部樓層
if是條件判斷語句,if(a=2),中的a=2是賦值表達式,不是判斷語句的“==”
回復

使用道具 舉報

ID:515970 發表于 2019-10-9 17:55 | 顯示全部樓層
a=2不是比較語句是賦值  在c語言中 = 為賦值。if(a==2)
回復

使用道具 舉報

ID:620731 發表于 2019-10-10 09:41 | 顯示全部樓層
賦值表達式a=2結果永遠為真,改為a==2就好了
回復

使用道具 舉報

ID:621564 發表于 2019-10-10 10:22 | 顯示全部樓層
if判斷里 a=2是賦值語句,需要改成 if(a==2)
回復

使用道具 舉報

ID:616759 發表于 2019-10-10 15:02 | 顯示全部樓層
wulin 發表于 2019-9-20 07:15
if(a = 2)???難道編譯時沒有警告?

有的編譯器不給警告,幫你當做一條語句執行了,我最近就遇到了,找了很長時間才找到這個錯誤(C++,比這個程序復雜很多)
回復

使用道具 舉報

ID:600929 發表于 2019-10-10 17:57 來自手機 | 顯示全部樓層
我剛開始也犯過這種錯
回復

使用道具 舉報

ID:621334 發表于 2019-10-10 22:14 | 顯示全部樓層
if(a= 2) 改為if(a == 2)   c語言中的=是賦值 ,==是判斷
回復

使用道具 舉報

ID:222006 發表于 2019-10-11 10:31 | 顯示全部樓層
你是打算賦值2給a變量嗎? a=2?a==2吧
回復

使用道具 舉報

ID:115743 發表于 2019-10-11 15:53 | 顯示全部樓層
if(a==2),你缺少了一個等號
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区在线播放 | 免费中文字幕日韩欧美 | 国产视频观看 | 欧美日韩国产一区二区三区 | 日韩精品视频在线观看一区二区三区 | 精品久久久久久久久久久久 | 欧美日韩精品在线一区 | 国产精品一级 | 亚洲在线一区二区三区 | 亚洲一区二区三区高清 | 久久一区二区三区四区 | 国产精品99999999| 成人免费看 | 日日日日操 | 欧美一区永久视频免费观看 | 农村妇女毛片精品久久久 | 欧美一区2区三区4区公司 | 国产精品一区久久久 | 国产精品视频入口 | 青草青草久热精品视频在线观看 | 精品日韩一区二区三区 | 久久久.com| 国产精品久久久久久久免费大片 | 亚洲精品在线免费 | 国产999精品久久久久久 | 免费在线毛片 | 青青草这里只有精品 | 日本成人在线免费视频 | www.日日操 | 波多野结衣在线观看一区二区三区 | 天天操天天插天天干 | 香蕉91| 在线不卡一区 | av网站免费观看 | 久久久久久久久蜜桃 | 一区在线播放 | 日本黄色高清视频 | 亚洲最新在线 | 亚洲精品日韩综合观看成人91 | 欧美日韩亚洲成人 | 亚洲精品一区二区二区 |