標題: C語言為什么變量不能自減? [打印本頁]

作者: WCM1998    時間: 2018-12-18 21:28
標題: C語言為什么變量不能自減?
while(1)
{a=b;a--}
假如b=100為什么a不能自減?謝謝
作者: angmall    時間: 2018-12-18 22:17
為何a能自減?
假如b=100
a=b 完成后 a=100
a--  完成后 a=99
不過a=b 完成后 還是a=100  為何你構(gòu)思a變量能自減?

腦子不夠用啊,換個游戲玩玩。

作者: dzbj    時間: 2018-12-18 23:30
你不斷給a賦值為b b=100 可不是不能自減么 實際上減了 但又給賦值成100了
作者: WCM1998    時間: 2018-12-19 08:19
dzbj 發(fā)表于 2018-12-18 23:30
你不斷給a賦值為b b=100 可不是不能自減么 實際上減了 但又給賦值成100了

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

作者: 1092648746    時間: 2018-12-19 09:18
在a=b前加個if判斷,滿足情況時賦值,不滿足情況時自減
作者: ssk7793    時間: 2018-12-19 09:18
分開,加判斷
作者: ssk7793    時間: 2018-12-19 09:19
分開,加判斷,即a的賦值放在判斷用戶輸入b值后就傳值給a,而a的自減可以放到定時器中
作者: sunny834243    時間: 2018-12-19 09:29
b的值賦給了a,完成后a減一,實際減了 但a的值又變成b=100因為b不斷賦值給a
作者: dzbj    時間: 2018-12-19 09:54
WCM1998 發(fā)表于 2018-12-19 08:19
謝謝、請問要怎才能實現(xiàn)自減呢、b是用戶接鍵調(diào)節(jié)值、當判斷某種情況下、a=b、然后a自已、但用戶設定值b不 ...

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

if(key==1)
{
flag_key=1;
}
if(flag_key==1)
{
flag_key=0;
b=100;
a=b;
}
a--;
作者: WCM1998    時間: 2018-12-19 10:58
dzbj 發(fā)表于 2018-12-19 09:54
這種情況要處理應該只在需要的時候給a賦值一次 然后不能重復再賦值 比如你做個標記 這只是個思路 你試試 ...

謝謝、還是不行的丶b是用戶設定置、b的值賦給a、當某種情下、a的值自減、b的值不變、
while(1)
{a=b;
if(FLag1)
{OCRB1=200;}
else
{OCRB1=200+a;
diyms(2);
a--;
}
}
作者: namecy    時間: 2018-12-19 14:18
WCM1998 發(fā)表于 2018-12-19 10:58
謝謝、還是不行的丶b是用戶設定置、b的值賦給a、當某種情下、a的值自減、b的值不變、
while(1)
{a=b;
...

驚了,你自己到底有沒有思考啊,你這個while(1)是一直循環(huán)的,你每一次a--完了以后,你又給a重新賦值了,當然不行啊
作者: namecy    時間: 2018-12-19 14:23
while(1)
{
if(key==0)
{
a = b;
}
a--;
}
作者: 04160601    時間: 2018-12-19 14:36
加判斷不可以嗎?
作者: jll586    時間: 2018-12-19 14:43
似乎總是在走回頭路啊,把a=b放while外面
作者: dzbj    時間: 2018-12-19 15:02
WCM1998 發(fā)表于 2018-12-19 10:58
謝謝、還是不行的丶b是用戶設定置、b的值賦給a、當某種情下、a的值自減、b的值不變、
while(1)
{a=b;
...

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

我給你說的思路的意思 是讓你想辦法在需要給a賦值=b的時候才賦值 而不是每次進入while(1)都先給a賦值=b
作者: WCM1998    時間: 2018-12-19 18:47
dzbj 發(fā)表于 2018-12-19 15:02
好像你還是沒明白 你這樣當然不行啊 上來就給a賦值 那后邊不管做什么 再進入主循環(huán)的時候 a都是=b的 效果 ...

這個值是賦給PWM的、調(diào)制脈寬所以必須在主循環(huán)里面
作者: 通天塔    時間: 2018-12-19 19:36
邏輯就有問題,剛減了1,又把a給賦值了,所以a會在100與99之間徘徊
作者: WCM1998    時間: 2018-12-19 20:05
通天塔 發(fā)表于 2018-12-19 19:36
邏輯就有問題,剛減了1,又把a給賦值了,所以a會在100與99之間徘徊

就是、不知道怎么寫才能達到目的、求教、謝謝各位大俠
作者: zhuguanshun    時間: 2018-12-19 20:10
你一直在a=b啊
作者: yong761228    時間: 2018-12-19 20:33
while(1)
{a=b;a--;b=a;} 這樣是否可以,如果這b一直是輸入的,就用中間臨時變量,b賦值給臨時變量,臨時變量再賦值給a,循環(huán)中不出現(xiàn)b. 反正要b也自減,否則一直循環(huán),就不變了。
作者: dzbj    時間: 2018-12-19 20:51
yong761228 發(fā)表于 2018-12-19 20:33
while(1)
{a=b;a--;b=a;} 這樣是否可以,如果這b一直是輸入的,就用中間臨時變量,b賦值給臨時變量,臨時 ...

你這個方法好 學習了
作者: WCM1998    時間: 2018-12-20 09:36
dzbj 發(fā)表于 2018-12-19 15:02
好像你還是沒明白 你這樣當然不行啊 上來就給a賦值 那后邊不管做什么 再進入主循環(huán)的時候 a都是=b的 效果 ...

謝謝。按你的思路分開控制可以了
作者: WCM1998    時間: 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停止,而是反復從255減到0一直循環(huán)
作者: sept80    時間: 2018-12-20 10:42
賦值放在循環(huán)外邊
作者: dzbj    時間: 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;
}
}
作者: 呼呼噠王玉噠    時間: 2018-12-20 16:36
因為b始終是100啊,進入循環(huán)里,b賦值給a,那么成了死循環(huán)
作者: a庚    時間: 2018-12-20 19:30
if(按鍵觸發(fā)){b=getvalue();if(某種條件){a=b;a--;}}
作者: 海賊缺    時間: 2018-12-20 20:12
減了之后,又重新賦值了,親。
作者: WCM1998    時間: 2018-12-21 08:03
a庚 發(fā)表于 2018-12-20 19:30
if(按鍵觸發(fā)){b=getvalue();if(某種條件){a=b;a--;}}

謝謝、照你的方法成功了、再次感謝
作者: 開樓    時間: 2018-12-22 23:21
你把a=b;放到循環(huán)外邊就行
作者: 木木小白    時間: 2018-12-23 00:27
因為賦值是由b的值給向a a--后a是99  但是while循環(huán)中 b不斷把100給a 所以a的值最后還是99
作者: rrrr'    時間: 2018-12-23 11:28
首先a--后要加;,再你每次自減后又立馬賦值了達不到你要求的自減效果
作者: Arvin0011    時間: 2018-12-24 09:49
此題有問題  假如b=100  每次循環(huán)將b賦值給a,即a=100,然后a自減得99但是下一輪循環(huán)開始時a又重新被賦予了值100,所以此題不成立
作者: robinsonlin    時間: 2018-12-24 12:15
授人以魚不如授人以漁。
你這個完全是C語言的問題,跟51一點關系都沒有。
給你個建議,下載一個notepad++,然后配置好MinGW環(huán)境,你可以在notepad++里面小段小段的調(diào)試你語句。 當然,也可以到keil里面,調(diào)用watch窗口,然后把a、b設置出來,這樣就可以看到全程看到a、b的值的變化了。
作者: 周超然    時間: 2018-12-24 22:36
dzbj 發(fā)表于 2018-12-18 23:30
你不斷給a賦值為b b=100 可不是不能自減么 實際上減了 但又給賦值成100了

正解,基礎可以
作者: 賣蘋果的喬布斯    時間: 2018-12-25 00:00
邏輯啊,這么簡單的問題就別問了吧
作者: wh8010jky    時間: 2018-12-25 22:03
WCM1998 發(fā)表于 2018-12-19 08:19
謝謝、請問要怎才能實現(xiàn)自減呢、b是用戶接鍵調(diào)節(jié)值、當判斷某種情況下、a=b、然后a自已、但用戶設定值b不 ...

while(1)
{
    if(a>=b)
   {a--;}
}
作者: 天風情    時間: 2018-12-26 10:37
沒有判斷條件,每次進主循環(huán)都會重新賦值




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