哪位大神看看,為什么i++; sum+=flag*i;這兩個順序不一樣,結果卻一樣?難道程序不是按步驟一步步來的嗎?
#include <stdio.h>
int main()
{? ??
? ? int sum = 0;??
? ? int i = 1;? ??
? ? int flag = 1;?
? ? while(i<=100)
? ?{? ?
? ?i++;
? ? ? ?sum+=flag*i;? ? ??
? ? ? ?flag*=-1;
? ?}
? ? printf("sum=%d\n",sum);?
? ? return 0;? ??
}
2020-02-26
i++在后面的情況是從? 1執(zhí)行執(zhí)行到100結束,最后一個數(shù)字是-100結果是-50。當i++在前面(如你寫的代碼),這種情況是從2執(zhí)行,執(zhí)行到101,最后一個數(shù)字是-101結果也是-50。第一種情況的最后一次是執(zhí)行完了sum+=-100? , i++就是100+1=101,然后再進入循環(huán)判斷101<=100,然后語句結束,第二種情況是最后一次進入判斷的是i=100,while(100<=100) 進入循環(huán)體 i++就是 100+1=101,sum+=-101, 這時候才算結束。這樣兩次的結果就都是-50了。不知道我這樣說是否明白。
2020-03-07
我不明白。。。求指教。
2020-02-26
同學你得先理解i++
正是因為i++時i首先仍取原值