sum+=i*flag;這個(gè)語(yǔ)句放在i++;前和后為什么會(huì)有相同的答案?
#include <stdio.h>
int main()
{
? ? /* 小伙伴們:
? ? ? ? ? ?選擇你們認(rèn)為最合理的循環(huán)結(jié)構(gòu)完成功能吧 */
? ? int sum = 0; ?//定義計(jì)算結(jié)果變量sum
? ? int i = 1; ? ?//定義循環(huán)數(shù)字變量i
? ? int flag=1;//定義符號(hào)狀態(tài)變量flag
? ??
? ? //使用while循環(huán)
? ? while(i<=100)
? ? { ? ?
? ? ? ? sum+=i*flag;
? ? ? ? i++;
? ? ? ? flag*=-1;
? ? ??
? ? }
? ? ?printf("sum=%d",sum);
}
sum += i*flag; 這個(gè)語(yǔ)句放在i++;前我能理解。
因?yàn)榈谝徊较葓?zhí)行sum的賦值為1,。
但如果sum += i*flag; 這個(gè)語(yǔ)句放在i++;后,我就不能理解了。
因?yàn)閕++;后不是會(huì)變成2嗎? ++在后的計(jì)算不是以;為結(jié)束嗎?
所以我認(rèn)為放在i++;后的話,
第一個(gè)sum 的賦值為:
sum=2*1=2。
菜鳥(niǎo)求解!
2015-09-29
? ? while(i<=100)
? ? { ? ?
? ? ? ? sum+=i*flag;
? ? ? ? i++ ;?
? ? ? ? flag*=-1;
? ? }
printf("sum=%d\n",sum);?
? 這個(gè)我認(rèn)為才是正確的答案。結(jié)果肯定是sum=0+1-2...-100;
? ? while(i<=100)
? ? { ? ?
? ? ? ???? i++ ;?
? ? ? ? sum+=i*flag;
? ? ? ? flag*=-1;
? ? }
printf("sum=%d\n",sum);?
這是題目給的標(biāo)準(zhǔn)答案,結(jié)果的確沒(méi)錯(cuò),但是輸出的應(yīng)該是sum=0+2-3。。。+100-101也是-50 。不知是否分析正確
2015-09-20
具體參考C語(yǔ)言運(yùn)算符優(yōu)先級(jí)
2015-09-12
你的思路沒(méi)錯(cuò)啊,的確是2.有什么問(wèn)題嗎?