这个是vs的不标准还是微软的特殊用意[fun(k,k++)],该怎么解决
这个是vs的不标准还是微软的特殊用意[fun(k,k++)]
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的结果。。百思不得其解。。。
------解决方案--------------------
嗯,荒芜 50分
------解决方案--------------------
这个事根部不同的编译器决定的 编译器的入栈顺序
------解决方案--------------------
这个标准里面没有规定,不同的编译器可以不一样的。没必要纠结则个
------解决方案--------------------
楼主,珍惜生命,别折腾C、c++标准明确指出的求值顺序不确定问题,这在csdn都是日经贴问题了。
------解决方案--------------------
编译器相关的,参考:
http://topic.csdn.net/u/20110826/09/601EBE9C-C2AE-4D63-A4E2-506C618BB654.html
- C/C++ code
#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的结果。。百思不得其解。。。
------解决方案--------------------
嗯,荒芜 50分
------解决方案--------------------
这个事根部不同的编译器决定的 编译器的入栈顺序
------解决方案--------------------
这个标准里面没有规定,不同的编译器可以不一样的。没必要纠结则个
------解决方案--------------------
楼主,珍惜生命,别折腾C、c++标准明确指出的求值顺序不确定问题,这在csdn都是日经贴问题了。
------解决方案--------------------
编译器相关的,参考:
http://topic.csdn.net/u/20110826/09/601EBE9C-C2AE-4D63-A4E2-506C618BB654.html