永发信息网

谭号强C++程序设计里面函数调用fun(i,++i)的问题。

答案:4  悬赏:20  手机版
解决时间 2021-03-16 20:32
  • 提问者网友:骑士
  • 2021-03-16 17:25
谭号强C++程序设计里面大体意思是这样的:在vc里面,若变量i的值为3,有以下函数调用:fun(i,++i); 它相当于fun(3,3);而不是fun(3,4)。
问题1:是不是他的书上写错了,怎么可能是fun(3,3)呢?应该是fun(4,4)吧。
问题2:问题1是可以用VC来验证的,具体的验证步骤是怎样的?关键是函数fun(i,++i)如何定义,定义后如何调用?
谢谢各位,回答满意有加分50!
最佳答案
  • 五星知识达人网友:玩家
  • 2021-02-22 11:11
书上印刷错误,相当于fun(4,4)

验证函数:
#include

void fun(int a,int b)
{
std::cout< }

int main(void)
{
int i=3;
fun(i,++i);
return 0;
}
全部回答
  • 1楼网友:你可爱的野爹
  • 2020-10-15 21:04

在vc中新建一个工程,工程类型为:windows console application

测试代码如下:

# include<stdio.h> #include <windows.h> void fun(int x,int y) { int i,j; i=x; j=y; printf("%d,%d",i,j); return; } void main() { int i=3; fun(i,++i); }

其实楼主误解了fun的作用,fun只是用来测试的,并不是问题的关键,fun函数的定义如何与该问题无关。

该问题其实讨论的是函数传参的问题。不同的编译器在编译“++,--”这些操作符时处理变量的方法是不一样的,这从编译连接得到的程序反汇编就可以知道。

不过,楼主有一点是说对了,参数传递的值的确是4,4

因为在fun函数传递参数的时候是先运算参数表达式,再传入参数的,i,++i表达式的结果就是使得i=4

所以传入的值就是4 ,4

这里是书错了应该。

  • 2楼网友:忘川信使
  • 2021-02-17 03:47
问题1: 没错。 问题2: 运行验证程序即可。 验证程序: main() { int i; int fun(int x,int y); fun(i,++i); printf("\n"); } int fun(int x,int y) { if(x>y) printf("i>++i"); if(x==y)printf("i=++i"); if(x
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯