#include <stdio.h> int main() { int sum = 0; int i = 1; int flag = 1; while(i<=100) { i++; sum += i * flag; flag *= -1; printf("%d\n", sum); // 执行的第一步结果是2,是错误的。虽然最终结果是-50没错,但是第一步是sum += i * flag的时候,i是2 } return 0; }
可是我觉得i++本来的定义就是先读数,再取值,也就是你把i++放在前面也没关系,因为它会先读取1,再取值为2,所以在第一次循环中实际参加的数就是1
#include <stdio.h> // 正确答案应该是这样 int main() { int sum = 0; int i = 1; int flag = 1; while(i<=100) { sum += i * flag; flag *= -1; i++; printf("%d\n", sum); } return 0; }