chengxuyuanwumou
chengxuyuanwumou
采纳率57.1%
2020-03-09 20:05 阅读 257

这第一个为啥不是9啊。求大佬帮忙解答谢谢谢谢

#include
void main()
{int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2020-03-09 22:15

    结果不确定,函数参数的求值顺序是C语言的未定义行为,语言规范没有规定顺序,不同的编译器不能保证输出的结果一致。你可以试不同的编译器,结果不同

    图片说明

    https://blog.csdn.net/chencheng126/article/details/47406597?utm_source=blogxgwz8

    我可以再打一个比方,比如我让你们班上的同学都写一个函数 sum(n),计算1+2+...+n的值

    你写的是
    int sum(int n)
    {int s = 0;
    for (int i = 1; i <= n; i++) s+= i;
    return s;}
    你的同学二狗写的是
    int sum(int n)
    {return (1+n)*n/2;
    }
    这两个程序在n>=1的时候,运算结果一样。
    现在问题来了,当n=-10的时候,你的程序返回10,二狗的程序返回-45。可能铁蛋写的程序返回-1234
    大家的就不一样。
    为什么,因为老师布置题目的时候,没有规定n<1怎么输出,所以结果是什么取决于你的程序怎么写的。
    一个道理,不同的编译器没有考虑这种代码应该输出什么,所以结果五花八门了。

    问题解决的话,请点下采纳。

    点赞 2 评论 复制链接分享
  • beijiao121 beijiao121 2020-03-09 21:14

    你这个输出第一个是++i,++i的工作原理是先加再用,输出9.

    点赞 2 评论 复制链接分享
  • Varible Varible 2020-03-09 22:13

    解题方案加解析:解决问题请采纳!
    有干扰。
    一个一个来,减少干扰。
    代码最好别这么玩!
    系统函数各个提供的不一样,每一个标准的。
    分行写,减少干扰就行了!
    注:别听那啥的瞎说八道,(第一个回答不带)运算符之前先运算,没那个正经书向他那说。i++才属于他说的那种。再说你看后面的运算是他说的那样吗?
    按我方法做:一行一行来。

    点赞 2 评论 复制链接分享
  • weixin_44741397 GJ_HQQ 2020-03-09 20:34

    你是说 ++i 吗++i这个表达式是9,你在哪里看到的不是9

    点赞 评论 复制链接分享

相关推荐