C++ primer 5th 第一章 开始 阅读笔记
第一章 开始
第一节 编写一个简单的C++程序
不同编译器使用不同的后缀命名约定,比如cc
、cpp
、c
。
比如main
程序保存到prog1.cc
中,可以使用如下命令来编译它:cc prog1.cc
。其中,cc
是编译器程序的名字,编译器生成一个可执行文件,Windows
系统命名为prog1.exe
,UNIX
系统中的编译器将可执行文件命名为a.out
。
运行GNU
编译器的命令是g++
,比如:g++ -o prog1 prog1.cc
。
运行微软Visual Stdio 2010
编译器的命令为cl
,比如:cl /EHsc prog1.cpp
,命令cl
调用编译器,/EHsc
是编译器选项,用来打开标准异常处理。微软编译器会自动生成一个可执行文件,其名字与第一个源文件名对应。
在UNIX
系统中,可执行文件没有后缀,默认生成a.out
的可执行文件。
第二节 初识输入输出
iostream
库包含两个基础类型istream
和ostream
,分别表示输入流和输出流。一个流就是一个字符序列,是从IO
设备读入或写入IO
设备的。术语“流”想表达的是,随着时间的推移,字符是顺序生成或消耗的。
标准库定义了4个IO
对象,cin
为istream
类型的对象,叫做标准输入。cout
是ostream
类型的对象,叫做标准输出。标准库还定义了其他两个ostream
对象,名为cerr
和clog
,cerr
用来输出警告和错误信息,叫做标准错误,clog
用来输出程序运行时的一般性信息。当我们向cout
、cerr
和clog
写入数据时,将会写到同一个窗口。
输出运算符<<
接收两个运算对象,左侧的运算对象必须是一个ostream
对象,右侧的运算对象是要打印的值。运算结果是写入了要打印的值的那个ostream
对象。比如:cout << "abc" << endl;
相当于(cout << "abc") << endl;
,前一个<<
执行的结果是写入了"abc"
的cout
对象。
endl
是一个操作符特殊值,写入endl
的效果是结束当前行,并将与设备关联的缓冲区(buffer)
中的内容刷到设备中。缓冲刷新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是仅停留在内存中等待写入流。
调试是添加的打印语句,应该保证“一直”刷新流,否则如果程序崩溃,输出可能还留在缓冲区中,从而导致关于程序崩溃位置的错误推断。
std::cin
指出cin
是定义在名为std
的命名空间(namespace)
中的,命名空间可以帮助我们避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突。标准库定义的所有名字都在命名空间std
中。
第三节 注释简介
/* */
不能嵌套,否则会让*/
之前出现的所有/*
失效。
第四节 控制流
不断读取数据直至没有新的输入为止:while(cin >> value)
,其中value
是int
类型。使用一个istream
对象作为条件时,其效果是检测流的状态。如果流是有效的,则流未遇到错误,那么检测成功,当遇到文件结束符,或遇到一个无效输入时(例如读入的值不是一个整数),istream
对象的状态会变为无效,然后istream
对象会使条件变为假。
Windows
系统中,输入文件结束符的方法是敲Ctrl+Z
,在UNIX
系统中,包括Mac OS X
系统中,文件结束符输入是用Ctrl+D
。
小结
内置类型:由语言定义的类型,比如int
。
::
运算符:作用域运算符。其用处之一是访问命名空间中的名字。std::cout
表示命名空间std
中的名字cout
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现