IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 第三章 顺序程序设计第一部分 -> 正文阅读

[C++知识库]第三章 顺序程序设计第一部分

写在前面

? 好多人都说谭浩强的C语言书不行,这一点笔者不敢苟同。其实C语言是一门计算机技术,是日新月异的。现在哪本关于C语言的书没点小错误?书出版了就不能再小改,这是书的弊病。

? 所以现在学技术主流的渠道还是看视频,但是书的好处就是,有一些细枝末节可以照顾到。所以笔者此行的目的就是重新对话谭浩强老师,拣拾一般会漏掉或者是略去的琐碎知识点。欢迎和笔者一同重新探索谭浩强老师的经典吧。

? 如果这一小节没有我认为细小知识点的话,笔者就会略去,只留下大纲,相当于思维导图吧 ^_^


第三章 最简单的C程序设计——顺序程序设计

数据的表现形式及其运算

常量和变量

常量
  1. 整型常量

  2. 实型常量

    • 十进制小数形式
    • 指数形式
    1. 规定以字母e或E代表以10为底的指数

    2. e前必须有数字,e后必须为整数

    不能写出e43e2.5的形式

  3. 字符常量

    • 普通字符

    单引号只是界限符,字符常量不包含界限符

    • 转义字符
  4. 字符串常量

    同样,双引号也只是界限符,字符串常量不包含界限符

  5. 符号常量

    • #define定义的常量
变量

变量代表的是一个有名字的、具有特定属性的一个存储单元。它用于存放数据,也就是存放变量的值。

变量名实际上是以一个名字代表的一个存储地址

在对程序编译组建时,由编译系统给每一个变量名分配对应的内存地址。

从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。

常变量
  1. 常变量与常量的异同?
  • 常变量:有类型,有存储单元,只是const修饰不被允许改变其值。
  • 常变量是有名字的不变量,常量是没有名字的不变量。
  1. 常变量与符号常量的区别
#define PI 3.1415926    //定义符号常量
const float pi=3.1415926//定义常变量

请问PI和pi有什么不同?

性质不同:

  1. #define是预编译指令,用符号常量PI代表字符串3.1415926。

  2. 在预编译的时候进行字符替换,预编译后,符号常量就被销毁了。

  3. 所以符号常量不分配存储单元。

  4. 常变量占用存储单元,有变量名和值。

标识符

标识符只能由字母、数字和下划线三者组成,且第一个字符不可为数字。

数据类型

数据存放在存储单元中,它是具体存在的。
而且,存储单元是由有限个字节构成,所以其存放的数据也是有限的,不可能存放无穷大的数,也不可能存放循环小数。
类型不同,对数据分配的存储单元的安排也不同。

在这里插入图片描述

整型数据

整型数据的分类
  1. 基本整型(int型)

整型数据的存储方式:用整数的二进制补码形式存放。

正数的补码:此数的二进制形式。

负数的补码:此数的绝对值的补码,然后所有位按位取反,再+1。

正数的二进制存储单元中,最左一位用于表示符号,0代表正数,1则为代表负数。

int数据取值范围为 -231 ~ 231-1

unsigned int数据的取值范围为0 ~ 232

在这里插入图片描述

有符号的整型数据存储单元中最高位代表数值的符号。
如果指定unsigned型,存储单元中全部二进制位都用于存放数值本身,而没有符号。
所以无符号数只能存放正数,也正因如此,无符号数的范围比有符号整型中正数的范围大一倍。
只有整型(包括字符型)数据可以加signed或unsigned修饰,实型数据不能加。
%u是无符号数十进制的格式输出符。
  1. 短整型
  2. 长整型
  3. 双长整型
sizeof(short)sizeof(int)sizeof(long)sizeof(long long)
整型变量的符号属性
类型取值范围
int ? 2 32 -2^{32} ?232 ~ ( 2 32 ? 1 ) (2^{32}-1) (232?1)
unsigned int 0 0 0 ~ ( 2 32 ? 1 ) (2^{32}-1) (232?1)
无符号整型与有符号整型数据都是4个字节,所有范围大小都是一样的。
但无符号数只有正数,所有无符号数范围是有符号数的正数范围的两倍。

字符型数据

字符与字符代码

字符为什么都分配1个字节呢?

ACSII字符集共有127个字符,故字符的ACSII码最多用7个二进制位表示。 2 7 ? 1 = 127 2^7-1=127 27?1=127

所以字符型数据仅用1个字节(8个bit)就可以全部表示。

字符变量

字符变量也属于整型,也可以用signed和unsigned修饰。

浮点型数据

为何带小数点的实数叫浮点数呢?

在C语言中,实数是以指数形式存放在存储单元中的。
一个实数可以以不同的形式表现为指数,如:

3.14 × 1 0 0 = 0.314 × 1 0 1 = 0.03.14 × 1 0 2 = . . . 3.14×10^0=0.314×10^1=0.03.14×10^2=... 3.14×100=0.314×101=0.03.14×102=...

这样由于指数的有效部分的小数点可以浮动,故我们把实数的指数形式称为浮点数。
float型
浮点数在存储时,系统将其以规范化的二进制数指数形式存放在存储单元中。
并分成小数部分和指数部分,分别存放。
有效部分将小数点移至开头,指数部分再补齐位置。

如浮点数3.14159,在内存中以如图形式存放。

在这里插入图片描述

该图是以10进制来示意的,实际上计算机是用二进制数来表示小数部分以及用2的次幂来表示指数部分的。
究竟用多少位来表示小数部分,多少位来表示指数部分,C标准中并未涉及,由各编译系统自定。
一般是用24位来表示小数,8位来表示指数。

小数部分占得位数越多,精度越高;指数部分占比越高,精度越低,但能表示的范围越大。

double型

为了扩大能表示的数的数值范围,用8个字节存储一个浮点数,可以得到15位有效数字。

其实为了高运算精度,程序进行浮点数计算时,自动将float型数据转为double型数据。

说明

有限的存储单元不可能完全精确地存储一个实数。

如float类型变量能存储的范围在:

[ ? 3.4 × 1 0 38 , ? 1.2 × 1 0 ? 38 ] [-3.4×10^{38},-1.2×10^{-38}] [?3.4×1038,?1.2×10?38] ? \bigcup ? [ ? 3.4 × 1 0 38 , ? 1.2 × 1 0 ? 38 ] [-3.4×10^{38},-1.2×10^{-38}] [?3.4×1038,?1.2×10?38]

long double型

怎样确定常量的类型

可以在常量的末尾加上专用字符,强制指定常量的类型。

若表示为float型常量,可以在其后加上F或f;

同理,加上L或l表示此常量为long double/int型的。

flaot a = 3.14159f;
long double a = 1.23L;

运算符和表达式

C 运算符

基本的算术运算符

自增(++)、自减(–)运算符

  • ++,-- 运算符易造成混淆,故需谨慎使用,仅使用最简单的形式即可。

算术表达式和运算符的优先级与结合性

不同类型数据间的混合运算

  • 混合运算时,系统自动将所有变量类型(包括整型,浮点型,字符型)全部转换成double型的,以提高运算精度。

强制类型转换运算符

  • (类型)是最高级别运算符,在算式中最先被运算。
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 11:43:20  更:2021-07-17 11:43:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 7:10:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码