i++放在運(yùn)算首位的問題
這里有個(gè)疑問,i++放在前面,在進(jìn)行計(jì)算sum,因?yàn)榍懊娌皇且呀?jīng)定義過i=1,那么第一步計(jì)算不就成了sum=sum-2了?而且無論i++放在首位還是末位都是一樣的-50,我的理解是i++放在首位不是應(yīng)該少+一個(gè)1了嗎,求解,困惑中
這里有個(gè)疑問,i++放在前面,在進(jìn)行計(jì)算sum,因?yàn)榍懊娌皇且呀?jīng)定義過i=1,那么第一步計(jì)算不就成了sum=sum-2了?而且無論i++放在首位還是末位都是一樣的-50,我的理解是i++放在首位不是應(yīng)該少+一個(gè)1了嗎,求解,困惑中
2016-11-06
舉報(bào)
2016-11-29
題目是計(jì)算1-2+3-4+...-100的值,
對比三個(gè)答案,while和do-while是先自加,再求和;而 for循環(huán)是先求和,再自加,明顯計(jì)算是有區(qū)別的。
while和do-while循環(huán)把i++放在前面,實(shí)際運(yùn)算的是2-3+4-5+...-101,值雖然也為-50,卻不對。
for循環(huán)運(yù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
確實(shí)是少加一個(gè) 1 ,用for的話參考代碼是正確的 ,個(gè)人認(rèn)為 前面用do和do...while是有誤的
2016-11-06
i++是先輸出再加1,所以應(yīng)該是先輸出1,但是此時(shí)電腦里面記下來的應(yīng)該是2;所以第一次是1,沒有錯(cuò)的。第二次電腦輸出2,但是記錄下來的是3。。。
2016-11-06
我覺得題目有問題,首先i++放在第一位,此時(shí)i值不是應(yīng)該是2,第一次運(yùn)算就直接成了sum=2,而不是1了,如果i++放在末位,應(yīng)該就對了吧,而且放在首位是從2計(jì)算到101啊,直接編一個(gè)全+到5的,按照i++放在首位得到20,放在末位就得到15,所以我覺得網(wǎng)友那些給的i++放在首位的答案是錯(cuò)的,有點(diǎn)偷換概念的感覺,雖然答案都是-50.