四夕丶
2017-05-19 07:12
采纳率: 80%
浏览 1.3k

C++ cout输出顺序问题

我在编译器里写了下面这些代码

 int a[3]={1,2,3};
int *p=a;
cout<<p[0]<<endl
       <<*(p++)<<endl;
输出是这样的
2
1
想半天没想明白
然后我换了一下代码
int a[3]={1,2,3};
int *p=a;
cout<<p[0]<<endl;
cout<<*(p++)<<endl;
然后输出是
1
1

难道cout在输出时是从后面往前面计算,然后再从前往后输出吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • shen_wei 2017-05-19 07:20
    已采纳
    点赞 评论
  • 四夕丶 2017-05-19 07:14

    p是指针,带星号的,这里显示不出来

    点赞 评论
  • oyljerry 2017-05-19 07:18

    这个顺序是不可预测的,标准没有规定是如何,可以任意的顺序
    http://stackoverflow.com/questions/7718508/order-of-evaluation-of-arguments-using-stdcout

    点赞 评论
  • 四夕丶 2017-05-19 07:25

    知道了,谢谢,编译器计算顺序问题

    点赞 评论
  • 孤独守己 2020-06-18 22:11

    你的第二行有问题吧?a可以是任何的书付给*g吧?

    点赞 评论

相关推荐 更多相似问题