#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;
}
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,就是在同个语句中。