找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C語言為什么變量不能自減?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:284571 發(fā)表于 2018-12-18 21:28 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
while(1)
{a=b;a--}
假如b=100為什么a不能自減?謝謝
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:155507 發(fā)表于 2018-12-18 22:17 | 只看該作者
為何a能自減?
假如b=100
a=b 完成后 a=100
a--  完成后 a=99
不過a=b 完成后 還是a=100  為何你構(gòu)思a變量能自減?

腦子不夠用啊,換個游戲玩玩。
回復(fù)

使用道具 舉報

板凳
ID:47286 發(fā)表于 2018-12-18 23:30 | 只看該作者
你不斷給a賦值為b b=100 可不是不能自減么 實際上減了 但又給賦值成100了
回復(fù)

使用道具 舉報

地板
ID:284571 發(fā)表于 2018-12-19 08:19 來自觸屏版 | 只看該作者
dzbj 發(fā)表于 2018-12-18 23:30
你不斷給a賦值為b b=100 可不是不能自減么 實際上減了 但又給賦值成100了

謝謝、請問要怎才能實現(xiàn)自減呢、b是用戶接鍵調(diào)節(jié)值、當(dāng)判斷某種情況下、a=b、然后a自已、但用戶設(shè)定值b不變、謝謝
回復(fù)

使用道具 舉報

5#
ID:393699 發(fā)表于 2018-12-19 09:18 | 只看該作者
在a=b前加個if判斷,滿足情況時賦值,不滿足情況時自減
回復(fù)

使用道具 舉報

6#
ID:424598 發(fā)表于 2018-12-19 09:18 來自觸屏版 | 只看該作者
分開,加判斷
回復(fù)

使用道具 舉報

7#
ID:424598 發(fā)表于 2018-12-19 09:19 來自觸屏版 | 只看該作者
分開,加判斷,即a的賦值放在判斷用戶輸入b值后就傳值給a,而a的自減可以放到定時器中
回復(fù)

使用道具 舉報

8#
ID:449551 發(fā)表于 2018-12-19 09:29 | 只看該作者
b的值賦給了a,完成后a減一,實際減了 但a的值又變成b=100因為b不斷賦值給a
回復(fù)

使用道具 舉報

9#
ID:47286 發(fā)表于 2018-12-19 09:54 | 只看該作者
WCM1998 發(fā)表于 2018-12-19 08:19
謝謝、請問要怎才能實現(xiàn)自減呢、b是用戶接鍵調(diào)節(jié)值、當(dāng)判斷某種情況下、a=b、然后a自已、但用戶設(shè)定值b不 ...

這種情況要處理應(yīng)該只在需要的時候給a賦值一次 然后不能重復(fù)再賦值 比如你做個標(biāo)記 這只是個思路 你試試吧

if(key==1)
{
flag_key=1;
}
if(flag_key==1)
{
flag_key=0;
b=100;
a=b;
}
a--;
回復(fù)

使用道具 舉報

10#
ID:284571 發(fā)表于 2018-12-19 10:58 來自觸屏版 | 只看該作者
dzbj 發(fā)表于 2018-12-19 09:54
這種情況要處理應(yīng)該只在需要的時候給a賦值一次 然后不能重復(fù)再賦值 比如你做個標(biāo)記 這只是個思路 你試試 ...

謝謝、還是不行的丶b是用戶設(shè)定置、b的值賦給a、當(dāng)某種情下、a的值自減、b的值不變、
while(1)
{a=b;
if(FLag1)
{OCRB1=200;}
else
{OCRB1=200+a;
diyms(2);
a--;
}
}
回復(fù)

使用道具 舉報

11#
ID:276442 發(fā)表于 2018-12-19 14:18 | 只看該作者
WCM1998 發(fā)表于 2018-12-19 10:58
謝謝、還是不行的丶b是用戶設(shè)定置、b的值賦給a、當(dāng)某種情下、a的值自減、b的值不變、
while(1)
{a=b;
...

驚了,你自己到底有沒有思考啊,你這個while(1)是一直循環(huán)的,你每一次a--完了以后,你又給a重新賦值了,當(dāng)然不行啊
回復(fù)

使用道具 舉報

12#
ID:276442 發(fā)表于 2018-12-19 14:23 | 只看該作者
while(1)
{
if(key==0)
{
a = b;
}
a--;
}
回復(fù)

使用道具 舉報

13#
ID:444864 發(fā)表于 2018-12-19 14:36 | 只看該作者
加判斷不可以嗎?
回復(fù)

使用道具 舉報

14#
ID:357520 發(fā)表于 2018-12-19 14:43 | 只看該作者
似乎總是在走回頭路啊,把a(bǔ)=b放while外面
回復(fù)

使用道具 舉報

15#
ID:47286 發(fā)表于 2018-12-19 15:02 | 只看該作者
WCM1998 發(fā)表于 2018-12-19 10:58
謝謝、還是不行的丶b是用戶設(shè)定置、b的值賦給a、當(dāng)某種情下、a的值自減、b的值不變、
while(1)
{a=b;
...

好像你還是沒明白 你這樣當(dāng)然不行啊 上來就給a賦值 那后邊不管做什么 再進(jìn)入主循環(huán)的時候 a都是=b的 效果等于后邊什么都沒干

我給你說的思路的意思 是讓你想辦法在需要給a賦值=b的時候才賦值 而不是每次進(jìn)入while(1)都先給a賦值=b
回復(fù)

使用道具 舉報

16#
ID:284571 發(fā)表于 2018-12-19 18:47 來自觸屏版 | 只看該作者
dzbj 發(fā)表于 2018-12-19 15:02
好像你還是沒明白 你這樣當(dāng)然不行啊 上來就給a賦值 那后邊不管做什么 再進(jìn)入主循環(huán)的時候 a都是=b的 效果 ...

這個值是賦給PWM的、調(diào)制脈寬所以必須在主循環(huán)里面
回復(fù)

使用道具 舉報

17#
ID:275479 發(fā)表于 2018-12-19 19:36 | 只看該作者
邏輯就有問題,剛減了1,又把a(bǔ)給賦值了,所以a會在100與99之間徘徊
回復(fù)

使用道具 舉報

18#
ID:284571 發(fā)表于 2018-12-19 20:05 來自觸屏版 | 只看該作者
通天塔 發(fā)表于 2018-12-19 19:36
邏輯就有問題,剛減了1,又把a(bǔ)給賦值了,所以a會在100與99之間徘徊

就是、不知道怎么寫才能達(dá)到目的、求教、謝謝各位大俠
回復(fù)

使用道具 舉報

19#
ID:253526 發(fā)表于 2018-12-19 20:10 | 只看該作者
你一直在a=b啊
回復(fù)

使用道具 舉報

20#
ID:405193 發(fā)表于 2018-12-19 20:33 | 只看該作者
while(1)
{a=b;a--;b=a;} 這樣是否可以,如果這b一直是輸入的,就用中間臨時變量,b賦值給臨時變量,臨時變量再賦值給a,循環(huán)中不出現(xiàn)b. 反正要b也自減,否則一直循環(huán),就不變了。
回復(fù)

使用道具 舉報

21#
ID:47286 發(fā)表于 2018-12-19 20:51 | 只看該作者
yong761228 發(fā)表于 2018-12-19 20:33
while(1)
{a=b;a--;b=a;} 這樣是否可以,如果這b一直是輸入的,就用中間臨時變量,b賦值給臨時變量,臨時 ...

你這個方法好 學(xué)習(xí)了
回復(fù)

使用道具 舉報

22#
ID:284571 發(fā)表于 2018-12-20 09:36 | 只看該作者
dzbj 發(fā)表于 2018-12-19 15:02
好像你還是沒明白 你這樣當(dāng)然不行啊 上來就給a賦值 那后邊不管做什么 再進(jìn)入主循環(huán)的時候 a都是=b的 效果 ...

謝謝。按你的思路分開控制可以了
回復(fù)

使用道具 舉報

23#
ID:284571 發(fā)表于 2018-12-20 10:33 | 只看該作者
WCM1998 發(fā)表于 2018-12-20 09:36
謝謝。按你的思路分開控制可以了

但新的問題出現(xiàn)了

a--
if(a==10)
  {
    a=10;
  }為什么這句話控制不到a=10。假如b=100,哪a就該從100減到10停止,而是反復(fù)從255減到0一直循環(huán)
回復(fù)

使用道具 舉報

24#
ID:450546 發(fā)表于 2018-12-20 10:42 | 只看該作者
賦值放在循環(huán)外邊
回復(fù)

使用道具 舉報

25#
ID:47286 發(fā)表于 2018-12-20 15:01 | 只看該作者
WCM1998 發(fā)表于 2018-12-20 10:33
但新的問題出現(xiàn)了

a--

你發(fā)個整的程序 這么一節(jié)一節(jié)的 看不懂 另外 人家那個a減完了b=a是正路子 理解一下唄

uchar b=100;

while(1)
{
a=b;
a--;
b=a;
if(b==10)
{
b=100;
}
}
回復(fù)

使用道具 舉報

26#
ID:450847 發(fā)表于 2018-12-20 16:36 | 只看該作者
因為b始終是100啊,進(jìn)入循環(huán)里,b賦值給a,那么成了死循環(huán)
回復(fù)

使用道具 舉報

27#
ID:80221 發(fā)表于 2018-12-20 19:30 | 只看該作者
if(按鍵觸發(fā)){b=getvalue();if(某種條件){a=b;a--;}}
回復(fù)

使用道具 舉報

28#
ID:451035 發(fā)表于 2018-12-20 20:12 | 只看該作者
減了之后,又重新賦值了,親。
回復(fù)

使用道具 舉報

29#
ID:284571 發(fā)表于 2018-12-21 08:03 來自觸屏版 | 只看該作者
a庚 發(fā)表于 2018-12-20 19:30
if(按鍵觸發(fā)){b=getvalue();if(某種條件){a=b;a--;}}

謝謝、照你的方法成功了、再次感謝
回復(fù)

使用道具 舉報

30#
ID:439279 發(fā)表于 2018-12-22 23:21 | 只看該作者
你把a(bǔ)=b;放到循環(huán)外邊就行
回復(fù)

使用道具 舉報

31#
ID:452415 發(fā)表于 2018-12-23 00:27 來自觸屏版 | 只看該作者
因為賦值是由b的值給向a a--后a是99  但是while循環(huán)中 b不斷把100給a 所以a的值最后還是99
回復(fù)

使用道具 舉報

32#
ID:452503 發(fā)表于 2018-12-23 11:28 | 只看該作者
首先a--后要加;,再你每次自減后又立馬賦值了達(dá)不到你要求的自減效果
回復(fù)

使用道具 舉報

33#
ID:446674 發(fā)表于 2018-12-24 09:49 | 只看該作者
此題有問題  假如b=100  每次循環(huán)將b賦值給a,即a=100,然后a自減得99但是下一輪循環(huán)開始時a又重新被賦予了值100,所以此題不成立
回復(fù)

使用道具 舉報

34#
ID:451718 發(fā)表于 2018-12-24 12:15 | 只看該作者
授人以魚不如授人以漁。
你這個完全是C語言的問題,跟51一點關(guān)系都沒有。
給你個建議,下載一個notepad++,然后配置好MinGW環(huán)境,你可以在notepad++里面小段小段的調(diào)試你語句。 當(dāng)然,也可以到keil里面,調(diào)用watch窗口,然后把a(bǔ)、b設(shè)置出來,這樣就可以看到全程看到a、b的值的變化了。
回復(fù)

使用道具 舉報

35#
ID:449525 發(fā)表于 2018-12-24 22:36 來自觸屏版 | 只看該作者
dzbj 發(fā)表于 2018-12-18 23:30
你不斷給a賦值為b b=100 可不是不能自減么 實際上減了 但又給賦值成100了

正解,基礎(chǔ)可以
回復(fù)

使用道具 舉報

36#
ID:303240 發(fā)表于 2018-12-25 00:00 來自觸屏版 | 只看該作者
邏輯啊,這么簡單的問題就別問了吧
回復(fù)

使用道具 舉報

37#
ID:134430 發(fā)表于 2018-12-25 22:03 | 只看該作者
WCM1998 發(fā)表于 2018-12-19 08:19
謝謝、請問要怎才能實現(xiàn)自減呢、b是用戶接鍵調(diào)節(jié)值、當(dāng)判斷某種情況下、a=b、然后a自已、但用戶設(shè)定值b不 ...

while(1)
{
    if(a>=b)
   {a--;}
}
回復(fù)

使用道具 舉報

38#
ID:426861 發(fā)表于 2018-12-26 10:37 | 只看該作者
沒有判斷條件,每次進(jìn)主循環(huán)都會重新賦值
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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