#include<iostream.h>
int m;
int add(int x, int y =15, int z = m);
int main(void)
{
using namespace std;
int a = 5,b = 10,c = 20;
int s;
s = add(a,b);
cout<<s<<endl;
}
int add(int x,int y,int z)
{
return x + y + z;
}
//end of this file
运行结果为什么是15而不是20呢?谁给我解释一下呗,谢谢
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
先推荐楼主一本书《C++ primer》,用于入门应该更好些,因为我看楼主的代码写得很多地方不够规范,比如 C++ 中使用
#include<iostream>
而不是 C style 的#include<iostream.h>
,另外对namaspace的使用也应该放在main函数以外更规范些。 好,现在回答问题,这里需要注意两点先说第一个问题:一个由 C/C++ 编译的程序占用的内存分为以下几个部分:
你程序中的m就是一个全局变量,所以虽然你没给它赋初值,但它会被初始化为0。
第二个问题,有默认值的参数如何使用,如果该参数被传递,择使用实参的值,所以形参
y
被赋值为实参b的值也就是10,而不是默认值15,而形参z没有被传递所以使用默认值也就是m=0
,所以自然是5 + 10 = 15
add(a, b)
中,调用add(x, y, z)
,其中x = a
,y = b
,z
取默认值m
,m
是全局变量,由系统初始化为 0,所以结果是a + b + 0 = 15
。