三、输入&输出
#include <iostream>
using namespace std;
int main()
{
int a;
double b;
char c;
// 可以自动识别变量的类型
cin >> a;
cin >> b >> c;
cout << a << endl;
cout << b << " " << c << endl;
return 0;
}
3.1 说明
- 使用cout 标准输出对象(控制台)和cin 标准输入对象(键盘)时,必须包含 < iostream > 头文件以及按命名空间使用方法使用 std。
- cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在< iostream >头文件中。
- <<是流插入运算符,>>是流提取运算符。
提示:实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识。
- 不考虑格式控制,C++的输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。
- 输入输出格式比较复杂,比如要控制浮点数的输出精度或是要控制字符输出宽度时,建议仍然使用printf/scanf等格式化输入输出函数,比较方便。
提示:C++同C语言一样使用空格或换行符分割输入流
3.2 cin/cout如何自动识别类型?
四、缺省参数
4.1 缺省参数概念
缺省参数是在声明或定义函数时为函数的参数指定一个默认值;在调用该函数时,如果缺省该实参则采用该形参的默认值,否则使用指定的实参。
void Func(int a = 0)
{
cout << a << endl;
}
int main()
{
Func(); // 没有传参时,使用参数的默认值
Func(10); // 传参时,使用指定的实参
return 0;
}
C语言不支持(编译器不支持)
给定的默认值必须是常量或者全局变量
缺省参数的默认值不能在函数声明和定义中同时出现,如果有函数声明必须写在声明处。
//a.h void Func(int a = 10); //a.cpp void Func(int a = 20){//....}
如果声明与定义位置同时出现默认值,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那个缺省值。
4.2 缺省参数的分类
- 全缺省参数
void Func(int a = 10, int b = 20, int c = 30)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
int main()
{
Func();
Func(1);
Func(1, 2);
Func(1, 2, 3);
return 0;
}
- 半缺省参数
void Func(int a, int b = 10, int c = 20)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
int main()
{
//Func(); //没有默认值的参数不能缺省
Func(1);
Func(1, 2);
Func(1, 2, 3);
return 0;
}
注意:
- 半缺省参数的默认值必须从右往左依次来给出,不能间隔着给。
- 同样调用带缺省参数的函数时,也应从左往右连续的传入参数,不能间隔缺省。