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

標題: 為什么這個單片機程序不能使用if判斷 [打印本頁]

作者: hellomcp    時間: 2019-9-19 20:27
標題: 為什么這個單片機程序不能使用if判斷
#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 ;
                }
        }



}

作者: hellomcp    時間: 2019-9-19 20:28
單片機無論如何都會運行if里面的第一個循環,而不會判斷條件是真是假,不知道怎么回事
作者: pansystem088    時間: 2019-9-19 21:21
a = 2是賦值表達式,其值為2,是非零值,i所以if語句"()"內的表達式執行結果永遠為真。
作者: pansystem088    時間: 2019-9-19 21:24
a=2是賦值表達式,其值為2,是非零值,所以if中"()"內的表達式運行結果為真。所以執行第一個while語句。
作者: xiaowg    時間: 2019-9-19 22:11
改成if(a==2)
作者: csmyldl    時間: 2019-9-20 00:21
應該把if(a = 2)改為if(a == 2) 但根據程序a不可能會等于2,那么就只好執行else{
                while(1){
                        led2 = 0 ;
                }
這里是是個無限循環,一直使led2=0;不知道這樣的程序編了后要實現什么樣的功能?
作者: 文鳳軒    時間: 2019-9-20 01:00
判斷應該用a==2,兩個等號,a=2一個等號是賦值
作者: liuyimao485812    時間: 2019-9-20 01:19
if(a==2) 就對了。
作者: wulin    時間: 2019-9-20 07:15
hellomcp 發表于 2019-9-19 20:28
單片機無論如何都會運行if里面的第一個循環,而不會判斷條件是真是假,不知道怎么回事

  if(a = 2)???難道編譯時沒有警告?
作者: sunguox    時間: 2019-9-20 08:39
判斷應該用a==2,兩個等號,a=2一個等號是賦值
作者: kkkkkkkkkkkk    時間: 2019-9-20 09:00
語法錯啦,改一下應該就好了
作者: 那個誰和誰    時間: 2019-9-20 09:36
改成a==2,但是這個程序沒啥用啊,死循環出不來。
作者: chen0769    時間: 2019-9-20 10:02
a = 2是賦值語句,則a值為2,是非零值,所以if語句表達式為真而運行第一個循環,判斷條件應該改為:if(a==2)
作者: 51_hei    時間: 2019-9-20 13:20
a = 2 是賦值語句,在一些編譯器中默認為真,如果希望程序運行,更改為a == 2 判斷語句即可。

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

如果希望實現什么功能,要改的地方就稍稍多了
作者: wcs1668    時間: 2019-9-20 14:41
書寫格式錯誤
作者: cuihaodianzi    時間: 2019-9-20 15:32
u16 a;
......

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



作者: qq603599910    時間: 2019-9-20 18:47
wulin 發表于 2019-9-20 07:15
if(a = 2)???難道編譯時沒有警告?

會出警告,但不是報錯.
作者: hellomcp    時間: 2019-9-22 18:37
謝謝大家了,賦值用等于,對比用直等于
作者: cql1980    時間: 2019-10-9 10:36
把if(a = 2)改為if(a == 2) 不知道還有其他程序嗎,a沒有自加 a++; a永遠不會=2吧
作者: zlg@1107    時間: 2019-10-9 15:38
if是條件判斷語句,if(a=2),中的a=2是賦值表達式,不是判斷語句的“==”
作者: 新手大包子    時間: 2019-10-9 17:55
a=2不是比較語句是賦值  在c語言中 = 為賦值。if(a==2)
作者: jiahao6681    時間: 2019-10-10 09:41
賦值表達式a=2結果永遠為真,改為a==2就好了
作者: KAIZI    時間: 2019-10-10 10:22
if判斷里 a=2是賦值語句,需要改成 if(a==2)
作者: bai_yun_123    時間: 2019-10-10 15:02
wulin 發表于 2019-9-20 07:15
if(a = 2)???難道編譯時沒有警告?

有的編譯器不給警告,幫你當做一條語句執行了,我最近就遇到了,找了很長時間才找到這個錯誤(C++,比這個程序復雜很多)
作者: 動情小豬    時間: 2019-10-10 17:57
我剛開始也犯過這種錯
作者: 晨晨晨晨晨晨    時間: 2019-10-10 22:14
if(a= 2) 改為if(a == 2)   c語言中的=是賦值 ,==是判斷
作者: 闊愛的釗釗    時間: 2019-10-11 10:31
你是打算賦值2給a變量嗎? a=2?a==2吧
作者: 邪乎風云    時間: 2019-10-11 15:53
if(a==2),你缺少了一個等號




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