(1.2)C++Primer 第一章 输入、输出、注释
1.2 初识输入输出
上一节讲解了 “输出”(std::cout),本节补充 “输入”(std::cin),并介绍 “如何通过输入输出实现程序与用户的交互”—— 核心是掌握std::cin和std::cout的基本用法,以及std命名空间的简化方式。
1.2.1 标准输入:std::cin
std::cin是 “标准输入流”(cin是 “console input” 的缩写),作用是 “从控制台读取用户输入的内容”,搭配 “输入运算符”>>使用。
示例:读取用户输入的两个整数并求和
#include<iostream>usingnamespace std; // 简化std命名空间的使用(重点!)intmain(){int a, b; // 定义两个整数变量,用于存储用户输入cout << "请输入两个整数(用空格分隔):"; // 提示用户输入cin >> a >> b; // 读取输入:将第一个数存入a,第二个数存入bcout << "它们的和是:" << a + b << endl; // 输出结果return0;}
代码解析
-
using namespace std;:简化命名空间std是 C++ 标准库的命名空间(namespace)—— 命名空间的作用是 “隔离同名的标识符(如函数、变量、类)”,避免命名冲突(例如,你自己写的
cout函数不会和标准库的cout冲突)。-
若不写
using namespace std;,每次使用标准库组件都必须加std::(如std::cin、std::cout);写了之后,就可以直接用cin、cout,无需重复写std::。 -
注意:
using namespace std;通常写在 “头文件包含之后、main()函数之前”,作用域是 “当前源文件”—— 对于简单程序,这是方便的写法;但在大型项目中,建议少用全局的using namespace std;(避免潜在的命名冲突),而是在需要的地方显式写std::,或用 “局部命名空间声明”(如在函数体内写using std::cout;)。
-
cin >> a >> b;:读取输入cin会自动 “跳过空白字符”(空格、制表符
\t、换行符\n等)—— 用户输入时,无论用空格还是换行分隔两个数,cin都能正确读取。-
变量的类型必须与输入内容匹配:若变量是
int(整数),用户输入了字母(如a),cin会进入 “错误状态”,后续读取会失败(后续章节会讲如何处理输入错误)。
>>是 “输入运算符”(也叫 “提取运算符”),作用是 “从左侧的流中提取内容,存入右侧的变量”。
-
读取规则:
运行效果
请输入两个整数(用空格分隔):3 5它们的和是:8
1.2.2 输入输出的连续使用
<<和>>都支持 “链式调用”—— 可以连续使用多个运算符,简化代码。例如:
-
连续输出:
cout << "a = " << a << ", b = " << b << endl;(先输出字符串"a = ",再输出a的值,再输出", b = ",再输出b的值,最后换行)。 -
连续输入:
cin >> a >> b >> c;(依次读取三个值,存入a、b、c)。
1.3 注释
注释是 “写给人看的代码说明”,编译器会忽略注释内容 —— 合理的注释能让代码更易读、易维护。C++ 支持两种注释风格:
1.3.1 单行注释://
-
语法:
// 注释内容(从//开始到 “行末尾” 的所有内容都是注释)。 -
适用场景:简短的注释(如单行代码的说明、变量含义)。
-
示例:
int a = 10; // 定义变量a,初始值为10(单行注释)// cin >> a; // 这是一行被注释掉的代码(不会执行)
1.3.2 多行注释:/* ... */
-
语法:
/* 注释内容 */(从/*开始到*/结束的所有内容都是注释,可跨多行)。 -
适用场景:较长的注释(如函数功能说明、代码块的逻辑解释)。
-
示例:
/** 函数功能:读取两个整数,计算并输出它们的和* 输入:用户从控制台输入两个整数* 输出:在控制台打印两个数的和*/int main() {/* 变量定义区a: 存储第一个整数b: 存储第二个整数*/int a, b;cin >> a >> b;cout << a + b << endl;return 0;}
注释的注意事项
-
多行注释不能嵌套:即
/* ... /* ... */ ... */是错误的 —— 编译器会将第一个/*和第一个*/匹配,剩余的... */会被当作代码,导致编译报错。 -
注释要 “简洁有用”:避免冗余注释(如
// 定义变量a这种废话),也不要写 “过时的注释”(代码修改后,必须同步更新注释,否则会误导读者)。 -
单行注释优先:能用量行注释的场景,优先用
//(比/* ... */更简洁,且避免嵌套问题)。
更多推荐
所有评论(0)