当前位置: 首页 > news >正文

C++Primer第五版【阅读笔记】

C++Primer第五版 阅读笔记

  • 第1章开始
    • 1.1 编写一个简单的C++程序
      • 1.1.1 编译、运行程序
    • 1.2 初识输入输出

第1章开始

学习一门新的程序设计语言的最好方法就是练习编写程序。

1.1 编写一个简单的C++程序

每个C++程序都包含一个或多个函数,其中一个必须命名为 main,操作系统通过调用 main 来运行C++程序。

一个函数定义包括:

  • 返回类型。
  • 函数名。
  • 形参列表。
  • 函数体:以 { 开始 ,以 } 结束的语句块。

main 函数的返回类型必须为 int。

return 语句包括一个值时,返回值类型必须与函数的返回类型相容。
类型相容:类型相同或能够进行隐式转换。

main 返回值被用来指示状态,0表示成功,非0的含义由系统定义,通常用来指出错误类型。

类型决定:

  • 内容。
  • 运算。
  • 内存空间。

1.1.1 编译、运行程序

常见源文件命名约定:.cc、.cxx、.cpp、.cp及.C。

操作系统 / 编译器编译运行访问 main 的返回值备注
UNIXCC prog1.cc 生成可执行文件 a.outa.out 或者 ./a.out(指出该文件在当前目录)echo $?
WindowsCC prog1.cc 生成可执行文件 prog1.exeprog1 或者 .\prog1(指出该文件在当前目录)$ echo %ERRORLEVEL%
GNUg++ -o prog1 prog1.cc 生成可执行文件 prog1./prog1(指出该文件在当前目录)-o 指定可执行文件的文件名。
UNIX生成 prog1
Windows生成 prog1.exe
省略 -o prog1 UNIX 系统生成 a.out 可执行文件。
Windows 系统生成 a.exe 可执行文件。
使用GNU编译器需要指定 -std=c++0x 参数来打开对C++11的支持。
Visual Studiocl /Ehsc prog1.cpp 自动生成可执行文件 prog1.exeprog1.\prog1.\prog1.exe(指出该文件在当前目录)命令 cl 调用编译器。
/Ehsc 是编译器选项,用来打开标准异常处理。
生成可执行文件名字与第一个源文件名对应,后缀为.exe。

GUN编译器选项 -Wall 使用说明:生成所有警告信息。

Visual Studio 编译器 /W4 使用说明:开启编译器 4级 警告信息。详细见 Microsoft C/C++ 编译器和生成工具错误与警告 官方文档。
点击此处进入:Microsoft C/C++ 编译器和生成工具错误与警告官方文档

1.2 初识输入输出

C / C++ 语言未定义任何输入输出语句,而是使用标准库提供IO机制(个人理解是是为了修改、拓展和升级方便)。

iostream库包含:

  • 流输入类型:istream
  • 流输出类型:ostream

标准库定义的4个IO库:

  • 标准输入:cin
  • 标准输出:cout
  • 标准错误:cerr(输出警告和错误信息)
  • 输出程序运行时的一般性信息:clog(可以理解为常规日志输出)

每个使用标准库设施的程序都必须包含相关的头文件。
#include指令和头文件的名字必须写在同一 行中。
通常情况下,#include指令必须出现在所有函数之外。
一般将一个程序的所有#include指令都放在源文件的开始位置。

C++中,一个表达式产生一个计算结果。
表达式:一个或多个运算对象和(通常是)一个运算符组成。

cout 中使用的 << 运算符 和 cin 中使用的 >> 运算符均返回运算符左侧对象,使得cout 和 cin 支持链式操作。

字符串字面值常量:一对双引号包围的字符序列。

endl:

  • 操作符。
  • 结束当前行。
  • 刷新缓冲区。

注意:调试程序时添加打印语句应该保证一直刷新缓冲区,否则会出现程序崩溃时输出还留在缓冲区,影响程序崩溃位置的判断。

命名空间的作用:避免不经意的名字冲突。
标准库定义的所有名字都在命名空间 std 中。

命名空间的使用推荐:

  • 建议使用(不释放命名空间):std::cout<<"hello world"<<endl;
  • 可以使用(释放部分命名空间): using std::cout;
    cout<<"hello world"<<endl;
  • 尽量少用(释放整个命名空间):using std;
    cout<<"hello world"<<endl;

初始化:创建变量的同时赋值。

http://www.lryc.cn/news/43114.html

相关文章:

  • ERD Online 4.0.11 在线数据库建模、元数据协作平台(免费、私有部署)
  • 3.数组算法、动态规划
  • 项目管理工具哪个好?最新排名
  • 650. 只有两个键的键盘——【Leetcode每日一题】
  • 【平常心无焦虑探讨】未来谁将被淘汰—在日常网络安全工作中使用GPT的感受
  • 【C语言】深度理解指针(下)
  • 【树与二叉树】树与二叉树的概念及结构--详解介绍
  • Spring Boot集成RocketMQ实现普通、延时、事务消息发送接收、PULL消费模式及开启ACL | Spring Cloud 30
  • 人人都能看懂的Spring源码解析,Spring如何解决循环依赖
  • Linux上搭建Discuz论坛
  • 【蓝桥杯专题】 树状数组(C++ | 洛谷 | acwing | 蓝桥)
  • QCefView编译配置(Windows-MSVC)(11)
  • Token原理
  • ③【Java组】蓝桥杯省赛真题 持续更新中...
  • linux实验之shell编程基础
  • C语言小程序:通讯录(静态版)
  • 写CSDN博客两年半的收获--总结篇
  • 中科亿海微FPGA应用(一、点灯)
  • ElasticSearch - SpringBoot整合ES:实现搜索结果排序 sort
  • IDEA的全新UI可以在配置里启用了,快来试试吧!
  • 第九章 镜像架构和规划 - 备份处于活动状态时自动进行故障转移
  • Barra模型因子的构建及应用系列七之Liquidity因子
  • 走进二叉树的世界 ———性质讲解
  • 【SSM】Spring + SpringMVC +MyBatis 框架整合
  • 【算法基础】一篇文章彻底弄懂Dijkstra算法|多图解+代码详解
  • 第二十三天01MySQL多表查询与事务
  • TCP协议详解
  • Activiti7与Spring、Spring Boot整合开发
  • 基于SpringBoot实现冬奥会运动会科普平台【源码+论文】
  • 一文吃透SpringBoot整合mybatis-plus(保姆式教程)