qq_36573673
qq_36573673
采纳率54.5%
2016-10-31 15:45

c语言printf("%d", ++a + ++a);

已采纳
    #include <stdio.h>
    int main()
    {
        int a = 1, b = 1, d = 1;
        printf("%d", ++a + ++a);
                return 0;
    }
        结果为6
        不同编译器会给出不同值,是随便给的还是怎么样,“++a + ++a”怎么运算啊
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 5年前

    不同编译器会给出不同值,这很正常,这是C语言的未定义行为
    http://blog.csdn.net/chencheng126/article/details/47406597
    https://www.zhihu.com/question/38737076

    点赞 评论 复制链接分享
  • Edroid1530 Escropion 5年前

    ++a是a先自加1在再执行后面的操作,++a的优先级高于加减运算符,所以这里相当于是a自加了两次再做加运算,此时a等于3,输出就是3+3啦

    点赞 1 评论 复制链接分享
  • wzxq123 尚书左仆射 5年前

    不同的编译器可能会拆分成不同的表达式。例如(++a)+(++a)或者((++a)++)+a之类的,其结果自然也会有所不同了。

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 5年前

    如果把C语言的规范当作说明书,那么未定义行为好比超过说明书设计用途的后果。比如说你的说明书说,你的手机型号可以在0~40摄氏度工作,如果在这个温度范围内,合格的这个型号的手机都可以正常使用。那么如果你在-10度下,手机会如何,就不确定了,可能有的不能开机,有的开机很快显示没电,有的可能结霜短路等等。手机厂商不测试也不保证会出现什么情况,这就是未定义行为。

    点赞 评论 复制链接分享

相关推荐