chengz97 2016-10-16 16:03 采纳率: 50%
浏览 1008
已采纳

新人求教C语言运算问题

 
 
int main(void)
{
    int x,y,z;
    x=y=2;
    z=3;
    y=x++ -1;
    printf("%d\t %d\t",x,y);
    y=++x-1;
    printf("%d\t %d\t",x,y);
    y=z-- +1;
    printf("%d\t %d\t",z,y);
    y=--z+1;
    printf("%d\t %d\n",z,y);
    return 0;
}

输出的结果是3 1   4 3   2 4   1 2
按照我对于自增自减运算符的理解 第一个y=x++ -1; 不应该是2先加1 然后减1应该是2吗 为什么是3
一系列的不理解 希望大手能给点解释 关于运算顺序和为啥出来这个运算结果的解释

  • 写回答

8条回答 默认 最新

  • threenewbee 2016-10-16 16:11
    关注

    y=x++ -1;
    是y = x - 1;
    x++;

    y=++x-1;
    是x++;
    y = x - 1;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 当作看不见 2016-10-16 16:12
    关注

    你理解反了,x++,先加完(使用过一次x,x的值才会+1)
    ++x,x先加一(不使用,直接先加1再说),先加,然后再使用。

    评论
  • iThinkCRL 2016-10-16 16:14
    关注

    “<语句>”中的x++相当于:

    <语句>
    x=x+1

    而“<语句>”中的++x相当于:
    x=x+1
    <语句>

    ~~~~~~~
    一个是后加,一个是先加。

    评论
  • Xth8013 2016-10-16 17:45
    关注

    自增自减运算符,你理解错了。你可以看看http://m.blog.csdn.net/article/details?id=7446587
    这里面有详讲

    评论
  • android_0327 2016-10-16 18:58
    关注

    第一个y=x++ -1; 不应该是2先加1 然后减1应该是2吗 为什么是3 x++中++在后会先使用X值进行计算 为Y=x-1 给y赋值完成后 y=1 运算结束后 再X++自增1 即 X=X+1 x=3

    评论
  • zilin-lynn 2016-10-17 01:09
    关注

    记忆小技巧:x++,x在前意味着本身;++x,+在前,意味着加1

    评论
  • 关注

    X++,先赋值再加,++X,先加后赋值.

    评论
  • chenxulong 2016-10-17 02:07
    关注

    x++是指运算式结束后x再加1 ,则 y = 2-1 = 1; x = 2+1; 故输出3 1

    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥20 SQL如何做交集查询
  • ¥15 unity 绘画方面的问题
  • ¥15 FTP 明明给了权限但是还是550 Permission denied问题
  • ¥20 Java的kafka错误unknowHostException
  • ¥20 gbase 8a没有lisense,需要获取一个lisense
  • ¥15 前端的3d饼图不知道用啥框架做的
  • ¥15 算法问题 斐波那契数 解答
  • ¥15 VS2019 SPY++ 获取句柄操作
  • ¥15 Facebook 获取广告
  • ¥15 PID算法的输出结果如何转换成pwm