这个是vs的不标准还是微软的特殊用意[fun(k,k++)]

春天到了冬天还远吗 2011-11-30 05:30:19


#include <cstdlib>
#include <iostream>

using namespace std;

int fun(int a, int b)
{
return a+b;
}

int _tmain(int argc, char *argv[])
{

int k=1;
cout<<"fun(k,k++):"<<fun(k,k++)<<endl;
k = 1;
cout<<"fun(k++,k):"<<fun(k++,k)<<endl;
k = 1;
cout<<"fun(k,++k):"<<fun(k,++k)<<endl;
k = 1;
cout<<"fun(++k,k):"<<fun(++k,k)<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}



vs2005/vs2010的输出:
fun(k,k++):3
fun(k++,k):3
fun(k,++k):4
fun(++k,k):4
请按任意键继续. . .

dev cpp的输出:
fun(k,k++):3
fun(k++,k):2
fun(k,++k):4
fun(++k,k):3
请按任意键继续. . .

devcpp的结果跟我想的一样,考虑到了k++和++k的区别,已经参数入栈的方式
而vs的结果。。百思不得其解。。。
...全文
123 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 taodm 的回复:]
楼主,珍惜生命,别折腾C、c++标准明确指出的求值顺序不确定问题,这在csdn都是日经贴问题了。
[/Quote]
汗,多久没来,都成时经了
柯本 2011-11-30
  • 打赏
  • 举报
回复
taodm 2011-11-30
  • 打赏
  • 举报
回复
楼主,珍惜生命,别折腾C、c++标准明确指出的求值顺序不确定问题,这在csdn都是日经贴问题了。
vivare 2011-11-30
  • 打赏
  • 举报
回复
这个标准里面没有规定,不同的编译器可以不一样的。没必要纠结则个
無_1024 2011-11-30
  • 打赏
  • 举报
回复
这个事根部不同的编译器决定的 编译器的入栈顺序
  • 打赏
  • 举报
回复
嗯,荒芜 50分

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧