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