回 帖 发 新 帖 刷新版面

主题:请你们高手看看??

void main()
  { int a; char c=10;
float f=100.0; double x;
for(int i=2;i<=10;i=i+2)
     a=f/=c*=(x=6.5);
  cout<<a<<c<<f<<x<<endl;
  }
这个程序好奇怪???
还有:
#include<iostream>
using namespace std;
void main()
  { 
    int i=1;
    cout<<i++<<"\t"<<i++<<"\t"<<i++<<"\t"<<endl;
  }

他们的执行的顺序是怎样的???请你们高手看看??

还想请问下高手们怎么叫数组的对称性??怎样证明???

回复列表 (共1个回复)

沙发

第一个问题无法回答,因为别人根本不知道你对哪一点奇怪?

第二个问题实质上是未定义行为,不同的编译器输出不同的结果。但你问的是“执行的顺序是怎样的”,这还是可以回答的。

对于表达式 function( 参数1 )( 参数2 ),参数2先入栈
对于表达式 function( function(参数1), 参数2 ),也是参数2先入栈

对于 cout << 内建型别对象1 << 内建型别对象2
实质就是 cout.operator<<( 内建型别对象1 ).operator<<( 内建型别对象2 ),endl等manipulators也是这样

对于 cout << 自定义型别对象1 << 自定义型别对象2
实质就是 operator<<( operator<<(cout,自定义型别对象1), 自定义型别对象2 )

当然,入栈顺序和平台编译器也是相关的

我来回复

您尚未登录,请登录后再回复。点此登录或注册