输入和输出
C语言中输入用函数scanf
,输出用函数printf
,它们包含在头文件<stdio.h>中。在C++中通常用cin
标准输入和cout
标准输出,使用时必须包含头文件<iostream>,且需要展开相应的命名空间。
#include <iostream>
//在项目开发中,通常使用std::cout和std::cin,避免全局展开造成命名冲突
//在日常练习中,可以全局展开std命名空间
using namespace std;
int main()
{
int a = 10;
char ch = 'a';
// C语言方式:需要控制输入输出格式
scanf("%c%d",&ch, &a); //输入 n 10
printf("%d ", a);
printf("%c\n", ch);
//输出10 n
//C++:不需要控制输入输出格式
cin >> a; //输入10
cin >> ch; //输入n
cout << a <<" "<< ch << endl;
//输出10 n
return 0;
}
注意:
1.使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std。
2.cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在<iostream >头文件中。
3.<<是流插入运算符,>>是流提取运算符。
4.使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式;C++的输入输出可以自动识别变量类型。因为C++兼容C语言,所以在C++开发中根据实际情况选择合适的输入输出方式。
5.cout和cin分别是ostream和istream类型的对象,>>和<<涉及运算符重载。
扩展:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用<iostream>+std的方式。
缺省参数
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。
#include <iostream>
int Add(int x = 10,int y = 20)//全缺省参数
{
return x + y;
}
int main()
{
int ret1 = Add();//不传参时,默认使用缺省值
int ret2 = Add(20, 30);//传入实参时,使用传入的实参值
printf("%d\n", ret1);//输出结果为30
printf("%d\n", ret2);//输出结果为50
return 0;
}
缺省参数可以分为全缺省参数和半缺省参数。
全缺省参数:函数中每个形参都有默认的缺省值。
int Add(int x = 10,int y = 20)//全缺省参数即函数中每个参数都有默认的缺省值
{
return x + y;
}
int main()
{
int ret1 = Add(,5);//error,使用的时候不能跳着使用
//正确使用如下
int ret2 = Add();//不传参 输出结果30
int ret3 = Add(20);//传一个参数,传给第一个形参 输出结果40
int ret4 = Add(5,6);//都传参 输出结果11
return 0;
}
半缺省参数:函数中部分形参没有缺省值,缺省值必须从右向左给出
int Add(int x = 5,int y)//error,缺省值必须从右向左给出
int Add(int x,int y = 20)//半缺省参数
{
return x + y;
}
int main()
{
int ret3 = Add();//error,函数中第一个形参没有缺省值,必须传入
//正确使用如下
int ret1 = Add(5);//传给第一个参数
int ret2 = Add(5,10);//两个参数都传参
}
注意:
1.半缺省参数必须从右往左依次来给出,不能间隔着给。
2.缺省参数不能在函数声明和定义中同时出现,在函数声明和定义同时存在的情况下,要在声明中给缺省值,定义中不要给缺省值。
//声明和定义同时存在时,要在声明中给缺省值,定义中不能给缺省值,因为当声明和定义中的缺省值不同时编译器无法确定到底该用哪个缺省值
//声明
int Add(int x = 20, int y = 10);
//定义
int Add(int x, int y)
{
return x + y;
}
3.缺省值必须是常量或者全局变量。
4.C语言不支持(编译器不支持)。