求大佬解釋下:++i,i++,i=i+1; 這個含義,為什么結果變成了1717了。謝謝!
#include <stdio.h>
int main()
{
??? int i,sum=0;
??? i=1;
??? while(?? i<=100? )? //循環條件應該是什么呢?
??? {
??????? sum=sum+i;
???????? ++i,i++,i=i+1;???????? //這里是不是應該改變循環變量的值
??? }
??? printf("100以內所有整數之和為:%d\n", sum);
??? return 0;
}
2022-03-29
老師,你的github賬號可以公開嗎?希望能有看到你的demo的源碼。
ozigukliywbfktfrxelnojwelkfjzhicqcmgbaqmewazfniljaqppjtkwurxllihajdnwvwpledmlwgmlwuotnudmnoepuqapumdfsqmurxyxsdqvhvcuua
2019-01-15
++i指的是先完成“加一的運算”,再“賦值”;
i++指的是先“賦值”,再完成“加一的運算”;
i=i+1就是直接賦值,與“i++”沒有太大區別。
在這道題里,“++i”與“i++”與“i=i+1”其實是同樣的運算。
sum每次賦值完后,i每次就增加1就是正確的。
但是你的答案,用了“?++i,i++,i=i+1;?”,也就是連續加了3個1,答案肯定錯啦。
給你示范一下你的答案循環過程:
1??i=1時:sum=0+i;i=i+1+1+1;
2??i=3時:sum=1+i;i=i+1+1+1;
3??i=6時:sum=4+i;i=i+1+1+1;
4??i=9時:sum=10+i;i=i+1+1+1;
……(這樣的結果漏掉了很多數,結果肯定不會是5050了)
可以復習一下3-3那一節