這樣輸出的值為什么為0,為什么==換成= 就輸出-50,還有 i++在sum的上面,i的值不是先與sum的值改變嗎?
#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; //定義符號狀態(tài)變量flag
? ??
? ? //使用while循環(huán)
? ? while(i<=100)
? ? { ? ?
? ?i++;?
sum==sum+i*flag;?
? ? ? ? flag *= -1;
? ? }
? ? printf("sum=%d\n",sum);?
? ??
? ? return 0; ? ?
}
2016-11-01
1、為什么為0?
因?yàn)閟um==sum+i*flag是個(gè)判斷語句,即判斷左右兩邊相不相等,整個(gè)表達(dá)式值為0;而輸出的sum未做任何賦值處理,為最先賦的初始值0;
2、為什么==換成=就輸出-50,”==”是判斷,“=”是賦值。所以sum=sum+i*flag表示把右邊表達(dá)式的值賦給sum,得出結(jié)果為-50;
3、?i++在sum的上面,i的值不是先與sum的值改變嗎?
要知道,i++后面加了個(gè)分號了,這是一個(gè)獨(dú)立的語句,運(yùn)行完這個(gè)語句再運(yùn)行下面的語句,所以先把i自加1再運(yùn)用到下面的語句去。如果sum=sum*i++,這個(gè)時(shí)候才是先用i*s,再把i自加1,就是在同個(gè)語句中。