20180514 ++i和i++

函数func的定义如下:
1
2
3
4
5
void func( const int & v1, cont  int & v2)
{
     std::cout << v1 <<  ' ' ;
     std::cout << v2 <<  ' ' ;
}
 以下代码输出结果为____。
1
2
3
4
5
6
int main ( int argc,  char * argv[])
{
     int i=0;
     func(++i,i++);
     return 0;
}
0 1
1 2
2 1
2 0
程序强制终止并报错
结果与编译器有关

答案:结果与编译器有关  错选:2 0

C语言函数参数入栈顺序为由右向左,func(++i, i++)可以分解为
参数 i 先入栈 输出0 
然后执行i++ 此时i为1 
接着参数 i 先执行++i   i 此时为2  后入栈进行输出 2

猜你喜欢

转载自www.cnblogs.com/kxzh/p/9034565.html