谭号强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!
谭号强C++程序设计里面函数调用fun(i,++i)的问题。
答案:4 悬赏:20 手机版
解决时间 2021-03-16 20:32
- 提问者网友:骑士
- 2021-03-16 17:25
最佳答案
- 五星知识达人网友:玩家
- 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;
}
验证函数:
#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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯