初学C++——清华大学 郑莉老师的课第一、二章笔记

2023-11-10 13:30

本文主要是介绍初学C++——清华大学 郑莉老师的课第一、二章笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


第一章

1. C++程序开发过程:

  • 算法与数据结构设计
  • 源程序编辑
  • 编译
  • 连接(把不同的模块合在一起,形成可执行的程序)
  • 测试(各种数据进行测试)
  • 调试

怎么把应用程序设置成一个发布版本?(能够win64/32独立运行)

->在生成发布版本之前,需要清除早期生成过程中创建的中间文件和输出文件,确保其是最终版本。

->点击“生成”菜单中的”清理解决方案“选项,在完成清理工作之后,在工具栏把这个生成的配置从Debug改为release版本,再点击菜单中”生成“的”生成解决方案“选型,即可。


信息的存储单位:

  • 位(bit, b):数据的最小单位,表示一位二进制信息
  • 字节(bite, B):八位二进制数字组成的(1 byte=8 bit)
  • 千字节 1KB=1024B
  • 兆字节 1MB=1024K
  • 吉字节 1GB=1024M


(对于负整数而言)

原码:

“符号——绝对值”表示的编码,0表示“+”号,1表示“-”号

缺点:

1.零的表示不唯一

2. 进行四则运算时,符号位必须单独处理,且规则复杂。


补码:

1. 零的表示唯一

2. 符号位可以作为数值参加运算


怎么求补码?

->借助“反码”

反码:除了符号位不变,其他位翻转一下。


(正整数的原码、反码、补码都是它自己。)这些编码规则解决的都是怎么表示负号。

负数补码=反码+1;

正数补码=原码;


两个负数的补码相加,把符号位顶出去了,变成正数了。(两个正数相加,变负数)

->这个表示运算结果溢出了。


实数的表示:

定点方案(小数点固定):特别大的数特别小的数没办法表示(一般不用)

浮点方案(即浮点数);


字符数据:

编码表示。ASCII。中国国家标准的汉字表示。


第二章

  1. 基本数据类型

 整数类型: int(int字节数与机器字长相关)

                  按符号分: unsigned int(无符号)即为非负数

                  按长度分: short、long、long long

字符类型:char(容纳单个字符的编码)

浮点数类型(实数类型):float(单精度)、double(双精度)、long double(扩展精度)

字符串类型:双引号存放的字符串(C风格),在C++里,有string类存放字符串

布尔类型:bool(true、false)

2. 整数类型(二进制、十进制、八进制、十六进制)

   相互之间的转化。

3. 字符串常量(在末尾有一个'\0'作为结束标记)

“a”: a \0

  'a':  a

4. 变量

   定义变量的方式使用内存空间,同时也可以初始化。如果不初始化的话,变量默认初始值是根据在程序中的位置决定的。

所以,定义变量时,初始化是个很好的习惯。

C++初始化的方式:

int a=0;
int a(0);
int a={0};// int a{0};初始化列表的方式。

初始化列表的方式是使用大括号的初始化方式,这种初始化不允许信息的丢失。

比如,用double类型去初始化int变量,小数部分就会丢失了。

5. 符号常量

  定义: const 数据类型说明符 常量名=常量值 or  数据类型说明符 const 常量名=常量名

注意:这种访问只能用不能修改,所以必须在定义就给初始值。

const double PI=3.14;

6. SIZEOF运算

   有些类会隐含生成一些你没定义但是也存在的数据成员,用sizeof可以算出一个类型/变量的字节数。

sizeof(short);
sizeof x;

7. 位运算

   “按位与” 

8. 类型转换

  有隐含转换,也有显式转换(建议使用)

语法形式:

 类型转化操作符<类型说明符>(表达式)

 类型转化操作符:const_cast/dynamic_cast/reinterpret_cast/stacti_cast(用的比较多)

int(z),(int)z,static_cast<int>z;//都可以

9. 运行时错误主要有两类原因:类型错误和逻辑错误(F11:逐语句运行,F10:逐过程运行(只关心每步执行的结果))

10. 对于错误信息,建议记录中文含义,根本原因以及解决方法。

11.数据的输入/输出:输入输出是信息流的操作

预定义的插入符和提取符:

“<<”插入符,“>>”提取符


12. for语句的另外一种形式:(范围for循环)

for(声明:表达式), 用于遍历一个容器中的序列.

13. 给类型取个别名 typedef

 typedef 已有类型名 新类型名 tpyedef double Area, Volume

C++新加入的: uisng 已有类型名 新类型名 using Area=double

14. 自定义类型:枚举类型(用户的自定义类型)

  表示一个星期的七天?怎么表示?——>如果把星期规定为整数类型,那用户输入8,16都是合法输入。用枚举可以解决这个问题。列出整数的子集,定义一个新类型:0,1,2,3,4,5,6。(用枚举的方式定义的)

enum Weekday { SUN,MON,TUE,WED,THU,FRI,SAR}

默认情况:SUN=0,MON=1,...,SAR=6;

以上是C++从C继承过来的,不限定作用域的枚举类型。(C++还可以定义限定作用域的枚举类型,后面会有介绍。)


不限定作用于的枚举类型说明:

1)枚举元素是常量,不能对他们赋值。

比如:enum Weekday { SUN,MON,TUE,WED,THU,FRI,SAR}

不能写下以下的赋值语句:SUN=0;

2)枚举元素有默认值,它们依次为0,1,2...

3)也可以在申明时另行指定枚举元素的值

比如:enum Weekday{SUN=7,MON=1,TUE,WED,THU,FRI,SAR}

那么,TUE会被自动为2,3,4,5,6.

4)枚举值可以进行关系运算。

5)整数不能赋值给枚举变量,如果需要将整数赋值给枚举变量,应该进行强制类型转化。

例子:

#include<iostream>
using namespace std;
enum GameReult { WIN, LOSE, TIE, CANCLE };int main()
{GameResult result;//定义枚举类型变量enum GameReult omit = CANCLE; //定义枚举类型变量,两种都可以。for (int count = WIN; count <= CANCLE; count++) //枚举常量值给整数变量赋值是可以的,枚举类型可以和int类型比较大小{result = GameReult(count);//先进行强制类型转化,因为整数不能给枚举类型赋值if (result == omit)cout << "The game was cancelled" << endl;else{cout << "The game was played";if (result == WIN) cout << "and we won!";if (result == LOSE) cout << "and we lose.";cout << endl;}}return 0;
}

15. auto类型&decltype类型

auto:编译器通过初始化自动推断变量的类型

比如:

 auto val=val1+val2;// val1和val2是int类型,则val是int类型,如果它们都是double类型,那么val是double类型。

decltype:定义一个变量与一表达式的类型相同,但并不用该表达式初始化变量

比如:

decltype(i) j=2;//表示j以2作为初始值,但是j与2并不是同一类型,类型与i一致。

这篇关于初学C++——清华大学 郑莉老师的课第一、二章笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/382945

相关文章

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)