i++放在運算首位的問題
這里有個疑問,i++放在前面,在進行計算sum,因為前面不是已經(jīng)定義過i=1,那么第一步計算不就成了sum=sum-2了?而且無論i++放在首位還是末位都是一樣的-50,我的理解是i++放在首位不是應該少+一個1了嗎,求解,困惑中
這里有個疑問,i++放在前面,在進行計算sum,因為前面不是已經(jīng)定義過i=1,那么第一步計算不就成了sum=sum-2了?而且無論i++放在首位還是末位都是一樣的-50,我的理解是i++放在首位不是應該少+一個1了嗎,求解,困惑中
2016-11-06
舉報
2016-11-29
題目是計算1-2+3-4+...-100的值,
對比三個答案,while和do-while是先自加,再求和;而 for循環(huán)是先求和,再自加,明顯計算是有區(qū)別的。
while和do-while循環(huán)把i++放在前面,實際運算的是2-3+4-5+...-101,值雖然也為-50,卻不對。
for循環(huán)運算的是1-2+3-4+...-100,值為-50,正確。
以while循環(huán)為例,查看每次i自加及sum求和的值。
#include <stdio.h>
int main()
{
??? ?int sum = 0; ?
??? int i = 1;?? ?
??? int flag = 1;
??? while(i<=100)
?? ?{
??????? i++;
?? ??? ?sum+=i*flag;
?? ??? ?printf("%d* %d= %d\n",i,flag,sum);????? //查看每次i自加及sum求和的值
??????? flag*=-1;
??? }
?? ?printf("%d\n",sum);
?? ?return 0;
}
2016-11-09
確實是少加一個 1 ,用for的話參考代碼是正確的 ,個人認為 前面用do和do...while是有誤的
2016-11-06
i++是先輸出再加1,所以應該是先輸出1,但是此時電腦里面記下來的應該是2;所以第一次是1,沒有錯的。第二次電腦輸出2,但是記錄下來的是3。。。
2016-11-06
我覺得題目有問題,首先i++放在第一位,此時i值不是應該是2,第一次運算就直接成了sum=2,而不是1了,如果i++放在末位,應該就對了吧,而且放在首位是從2計算到101啊,直接編一個全+到5的,按照i++放在首位得到20,放在末位就得到15,所以我覺得網(wǎng)友那些給的i++放在首位的答案是錯的,有點偷換概念的感覺,雖然答案都是-50.