1475228593
2015-02-16 19:36
sum+=i*flag;
flag*=-1
这两步不懂啊 什么意思呢 怎么算的 啊
当执行sum=sum+i*flag(1)后,
执行flag*=-1 (变成 flag= flsg(1)*(-1))=-1
这个时候 flag已经是=-1了
在执行 i++后,sum=sum+i*(flag=-1)负数
再执行一次flag*=-1 (变成 flag= flsg(-1)*(-1))=1, 正数!
就是一直这样一正一负循环, ? 我是这样理解的,看了半个小时理解这个代码意思! 希望对你有所帮助
(百度搜到的解释,觉得不错就分享了。)
这是一个编程的小技巧
第一次执行循环的时候:
flag = 1 , sum = 0, i = 1
那么
sum = sum + i * flag = 0 + 1 * 1 = 1 i作为正数加入
接下来flag = flag * -1 = 1 * -1 = -1
所以第二次执行循环的时候
sum = sum + i * flag = 1 + 2 * -1 = 1 - 2 = -1 i作为负数加入
接下来flag = flag * -1 = -1 * -1 = 1
那么第三次执行循环的时候,i又可以作为正数加入,
以此类推就可以达到判断符号的效果。
不明白
什么东东
sum+=i*flag等价于sum=sum+i*flag
flag*=-1等价于flag=flag*(-1)
C语言入门
926020 学习 · 20793 问题
相似问题