這樣輸出的值為什么為0,為什么==換成= 就輸出-50,還有 i++在sum的上面,i的值不是先與sum的值改變嗎?
#include <stdio.h>
int main()
{
? ? /* 小伙伴們:
? ? ? ? ? ?選擇你們認為最合理的循環結構完成功能吧 */
? ? int sum = 0; ?//定義計算結果變量sum
? ? int i = 1; ? ?//定義循環數字變量i
? ? int flag = 1; //定義符號狀態變量flag
? ??
? ? //使用while循環
? ? while(i<=100)
? ? { ? ?
? ?i++;?
sum==sum+i*flag;?
? ? ? ? flag *= -1;
? ? }
? ? printf("sum=%d\n",sum);?
? ??
? ? return 0; ? ?
}
2016-11-01
1、為什么為0?
因為sum==sum+i*flag是個判斷語句,即判斷左右兩邊相不相等,整個表達式值為0;而輸出的sum未做任何賦值處理,為最先賦的初始值0;
2、為什么==換成=就輸出-50,”==”是判斷,“=”是賦值。所以sum=sum+i*flag表示把右邊表達式的值賦給sum,得出結果為-50;
3、?i++在sum的上面,i的值不是先與sum的值改變嗎?
要知道,i++后面加了個分號了,這是一個獨立的語句,運行完這個語句再運行下面的語句,所以先把i自加1再運用到下面的語句去。如果sum=sum*i++,這個時候才是先用i*s,再把i自加1,就是在同個語句中。