为什么使用sum+=i*(2*(i&2)-1)的式子输出结果和预想的不符

来源:4-10 循环结构之三种循环比较

OrangePeel

2018-09-06 00:26

https://img1.mukewang.com/5b9002800001c03909660568.jpg

sum+=i*(2*(i&2)-1)

括号中由i的奇偶得出+1或-1,但从输出结果来看似乎括号里算出来都是1



写回答 关注

3回答

  • 慕九州5552665
    2018-09-09 13:29:56
    已采纳

    #include <stdio.h>

    int main()

    {

        /* 小伙伴们:

               选择你们认为最合理的循环结构完成功能吧 */

        int sum = 0;  //定义计算结果变量sum

        int i = 1;    //定义循环数字变量i

        int flag = 1; //定义符号状态变量flag

        

        //使用for循环

        for(i=1;i<=100;i++)

        {

            i++;

            flag=-i-1;

            sum+=i+flag;

        }  

        printf("sum=%d\n",sum); 

        

        return 0;    

    }


    慕九州555... 回复Orange...

    呵呵 \(^o^)/~ o(* ̄︶ ̄*)o ^_^

    2018-09-09 13:37:00

    共 2 条回复 >

  • jiexianorigin
    2018-10-04 18:33:53

    厉害了,想到这种操作法

  • qq_十月末_0
    2018-09-06 11:27:38

    flag呢


    Orange...

    没有用上flag

    2018-09-06 11:30:01

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926866 学习 · 21114 问题

查看课程

相似问题