c++学习合集(2025-4-29)
数据输出
cout输出
#include <iostream> // 引入标准输入输出流库(包含cout/cin等)
using namespace std; // 使用标准命名空间(避免写std::cout)int main() // 程序入口函数(必须有且唯一)
{// 输出 "hello world" 并换行cout << "hello world" << endl; // 原代码中的 end1 是拼写错误,endl 才是正确的换行操作符// endl = 换行 + 刷新输出缓冲区system("pause"); // 暂停控制台(Windows特有,防止窗口闪退)return 0; // 返回退出码0(表示程序正常结束)
}
跟C语言一样都有一个框架;各个解释如上图;
以下是代码的逐行解释:
```cpp
#include <iostream> // 引入标准输入输出流库(包含cout/cin等)
using namespace std; // 使用标准命名空间(避免写std::cout)
int main() // 程序入口函数(必须有且唯一)
{
// 输出 "hello world" 并换行
cout << "hello world" << endl;
// 原代码中的 end1 是拼写错误,endl 才是正确的换行操作符
// endl = 换行 + 刷新输出缓冲区
system("pause"); // 暂停控制台(Windows特有,防止窗口闪退)
return 0; // 返回退出码0(表示程序正常结束)
}
```
### 关键概念解析
1. **`#include <iostream>`**
- 包含C++标准输入输出库,使`cout/cin`等可用
- 类比:就像告诉编译器"我要用打印机,先接上电源"
2. **`using namespace std`**
- 直接使用标准库中的名称(如`cout`代替`std::cout`)
- 争议点:大型项目中可能污染命名空间,但小程序中方便
3. **`cout << ... << endl`**
- `<<`:流插入运算符(数据流向控制台)
- `endl`:换行+强制刷新缓冲区(比`\n`更彻底但稍慢)
4. **`system("pause")`**
- 调用系统命令暂停程序(仅限Windows系统)
- 替代方案:可用`cin.get()`实现跨平台暂停
### 常见问题
Q1: 为什么要用`return 0`?
A1: 表示程序正常退出(非0值通常表示错误类型)
Q2: `endl`和`\n`的区别?
A2: `\n`只换行不刷新缓冲区,`endl`会立即输出内容(性能敏感场景慎用)
Q3: 去掉`system("pause")`会怎样?
A3: 在IDE中运行时窗口会立即关闭,看不到输出结果(命令行直接运行不受影响)
### 代码执行流程
编译 → 生成exe → 输出"hello world" → 暂停等待按键 → 结束
建议新手尝试:
1. 去掉`system("pause")`观察现象
2. 将`endl`改回`end1`看编译报错
3. 添加新的`cout`语句输出其他内容
//----------------------------------------------------------------------------------------------------------------------//
插入流的理解(也就是那些小于号)
在输出a=10之后,要是还想输出一个分号的话,那得再用插入流小于号括起来,然后把分号当字符输出;
插入流的用法是,相当于一个箭头,指向的就是要输出的内容
//----------------------------------------------------------------------------------------------------------------------//
数据输入
cin输入
相当于c语言的scanf;
具体格式如下:同时对插入流符号有了深理解,指向变量说明是输入,从变量指出,说明是输出
数据类型
浮点型
float型:
double型:
科学计数法:
字符型
转义字符
换行符
字符串
两种风格
C语言:
C++:
两种都可以使用
布尔类型
占一个字节的内存大小,他只能表示真假,true为真,本质为1,false为假,本质是0,这个数据类型跟51的bit很像,bit也是只能表示1和0;跟bit感觉没有两样,专门可以用来做标志位;实验得知你也可以对布尔数据赋值,赋值为不为1的数也是可以的,但是他也是只能存储为1,也就是为真,