petard  

第4章 常量

1. 常量特点

程序运行时,其值不能改变的量,即为常量。
 习惯上常量名使用大写,方便与变量区分。

2. 常量分类

​ **字面量常量 **:直接使用的常量,不需要定义或声明,包括整数常量、浮点数常量、字符常量。

注:有 1,2,3等			——顾名思义,就是数字整数
	1.21.31.4等	 ——也就是小数
	'a','b','c'等	   ——表示的就是字母;而单独写入字母 不加单引号,是不允许的,由于单独字母就是变量了

标识符常量

3. 常量定义方式(标识符常量)

​ ① #define 宏定义 (C98标准) ——#define 必须写在 main 函数的外面(#define 是预处理指令)
格式:#define 常量名 常量值

​ ② const 关键字(C99标准增加)
格式:const 数据类型 常量名 = 常量值; ——const 只要位置在 常量名 前面就可以,eg:可以和 数据类型交换位置

注:1.const可以写在主函数里外都行
   2.const适用于C99、是在C99之后产生的,#define是C89

4. 两种定义方式区别

​ 类型检查: const 编译阶段会进行类型检查,#define 方式不会
​ 执行时机: const 在程序执行的时在内存中创建; #define 在预处理阶段进行文本替换

注:两种定义常量的方式,定义后的常量都不允许被修改

第5章 二进制

1. 进制

(1)常见进制

二进制、十进制、十六进制

HEX、DEC、OCT 和 BIN含义如下:

  • HEX,英文全称 Hexadecimal,表示十六进制
  • DEC,英文全称 Decimal,表示十进制
  • OCT,英文全称 Octal,表示八进制
  • BIN,英文全称 Binary,表示二进制

(2)不同进制的表示

默认十进制
0b开头表示二进制
0x开头表示十六进制

(3) 不同进制输出格式占位符

%d :十进制整数。
%x :十六进制整数。
%#x :显示前缀 0x 的十六进制整数。 ——x的小写
%#X :显示前缀 0X 的十六进制整数。 ——X的大写

2. 进制转换

注:一般进制转换,其他进制 转 十进制 × ,十进制 转 其他进制 ÷

详细说明:

  • 其他(几)进制 转 十进制

​ 规则:从最低位开始,将每个位上的数提取出来,乘以 几 的(位数-1)次方,然后求和。

  • 十进制 转 其他(几)进制

​ 规则:将该数不断除以 几 ,直到商为0为止,然后将每步得到的余数倒过来,就是对应的 几 进制。

八四二一法: 是一种快速转换数字的方法,主要用于二进制、八进制和十六进制之间的转换。

(1)二进制与十进制之间相互转化

8421公式:

2^0=1
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
2^7=128
2^8=256
2^9=512
2^10=1024   ——对应凑整
二进制转十进制:
1011=1*2^3 + 0*2^2 + 1*2^1 + 1*2^0
	=8+0+2+1
	=11
十进制转二进制:(用2的几次方的得数凑整)
57=2^5 + 2^4 + 2^3 + 2^0
  =32+16+8+1
  =100000+10000+1000+1
  =111001

(2)十六进制和十进制(了解)

(3)二进制与十六进制之间的相互转化(重点)

4个二进制位相当于1个十六进制位,对应位数相互转换就可以 中间会使用十进制作为桥梁

1111——>15——>F

3. 原码 反码 补码

正数和0:
原码、反码、补码都一样

负数:
原码:符号位为1,其它转为对应的二进制数字即可
反码:原码基础上,符号位不变,其他位取反
补码:反码基础上,+1

注:计算机上存储的是补码

补码计算器:https://www.lddgo.net/convert/number-binary-code

第 6 章 数据类型

bit——比特(b)

byte——>字节(B)

1. 整数类型

(1)整型划分

类型名称 存储长度
short int 短整型 2字节
int 整型 4字节
long int 长整型 4或8字节
long long int 长长整型 8字节

注:① 每种类型又分为有符号(signed)和无符号(unsigned)

​ ② 默认表示有符号,如 int 表示 signed int

​ ③int、signed 都可省略

​ int = signed int =signed;short = signed short int

(2)字面量后缀(不需要记)

数据类型 字面量后缀 数据类型 字面量后缀
int 没有 unsigned int U
long L unsigned long UL
long long LL unsigned long long ULL

注:① 字面量后缀不区分大小写

​ ② U和L可以自由组合,UL等同于LU,ULL等同于LLU

​ ③short 与 int 字面量后缀使用相同

(3)格式占位符

数据类型 格式占位符 数据类型 格式占位符
int %d unsigned int %u
short %hd unsigned short %hu
long %ld unsigned long %lu
long long %lld unsigned long long %llu

注:数据类型与格式占位符要一一对应

(4)等宽整数类型 ——只是自行定义的,为了增加代码的适配性,提高程序的可移植性

位于标准库头文件 stdint.h

int8_t		uint8_t
int16_t		uint16_t
int32_t		uint32_t
int64_t		uint64_t


    int8_t n1 = 100;	// 8个二进制位 1 字节的有符号整数
    uint8_t n2 = 101;	// 8个二进制位 1 字节的无符号整数
    
    int32_t n3 = 10;	// 32个二进制位 4 字节的有符号整数
    uint32_t n4 = 11;	 // 32个二进制位 4 字节的无符号整数

2. 浮点类型 ——常用的是double

(1)浮点类型划分

数据类型名 存储长度 有效小数位数
float 单精度 4 6~9
double 双精度 8 15~18
long double 长双精度 10~16 18或更多

​ 都有符号

​ 默认是double

有效小数位显示的情况:

float、double、Long double 的输出显示的有效小数位:默认输出6位

注:printf("float: n3=%.2lf \n",n3); //在%后加入 .2 就表示输出默认显示几位小数,默认显示6位小数,不过在计算机上存储的是对应的存储长度 及 有效小数位,只是输出显示的设置罢了

(2)浮点类型字面量后缀(不需要记)

注:字面量后缀加不加都可以

类型 字面量后缀
float F
double 没有
long double L

注:字面量后缀不区分大小写!

小数0.55前的0可以省略,等同于 .55

(3)格式占位符

数据类型 十进制形式格式占位符 科学计数法格式占位符
float %f %e
double %lf %le
long double %Lf %Le
分别对应两种形式的占位符使用:
                      %.3 小数保留3位                      %e 保留一个整数位

注:printf() 输出的时候,%f 可以表示 float 和 double

​ scanf() 获取输入的时候,只有 %lf 表示double

​ 科学计数法说明:double n2 = 5.2e2; // 5.2*10^2

printf使用%e输出,结果转化为 保留一个整数位 eg:3.211000e-4

(4) 浮点类型存储原理

浮点数会分成 符号位、指数位、尾数位进行存储

	3^2中2为指数

3. 字符类型(char)

1. 字面量表示
   单引号

2. 转义字符 (也有对应的ASCII码值)
   \n  	——换行符
   \'	——表示'
   \\	——表示\
   \t	——表示制表符
   
   ——必须要是英文格式的字符才可以

3. 字符类型的本质
   本质是一个字节的整数,分为 charunsigned char
   
   其中signed char取值范围-128 ~ 127unsigned char取值范围0 ~ 255。默认是否带符号取决于当前运行环境。
   
4.格式占位符
	使用 %c 表示char类型。

5. ascII 码  *(记)
   A 65
   a 97
   
6. 存储过程
存储字符——>在ASCII码表中读取对应的十进制数字——>转换为对应的 二进制数字 存储在计算机中

注:设计之初,ASCII码只为了表示英文字母的对应数字的转换,不适用与全球;现今创建出了UTF-8编码,该编码可以表示几乎所有语言中的字符,也称万国码

ASCII码只有128个(也就是2^7),一个字节
原因:二进制编码限制。ASCII码使用7位二进制数来表示一个字符,总共可以表示2^7=128个不同的字符,这种设计既满		足了当时的需求,也保证了编码的简洁性和效率。
ASCII码的最高位设置为0,这是出于奇偶校验的需要,确保了兼容性和错误检测的能力。

编码时,存储原理:

	* 存入字符:与ASCII码中选出对应的 十进制数字 ——>把其转化位 二进制数 存储
	* 存入数字:直接把 十进制数字 ——>转化为 二进制数 存储

注:ASCII码 中的字符包含 09(只包含一位数),az,A~Z;(a 与 A 相差32)

char字符类型中数字表示的含义,对应于ASCII
1char c9 = 199;  //199相对于char类型是指的ASCII值,199超过了ASCII值的范围
    char c10 = 65;  //65在ASCII中对应的是A,而1对应的是空白
    
21对应的是ASCII值为 空白 ,所以输出显示的也是空白

注:汉字在编码中一般占2~3个字节,根据计算机操作系统的不同而决定

4. 布尔类型

说明:布尔类型是一种形式(int)的别名:

int ——> bool

True ——> 1 (其他 非0 都是 1 )

False ——> 0

1. 第一种方式
   C89标准,使用宏定义(#define

2. 第二种方式
   C99标准,添加 _Bool 类型

3. 第三种方式
   C99标准,标准库头文件 <stdbool.h>
   bool true false

总结:三种方式都可以修改布尔类型的变量,不过分为两种:1、第一种为一种,可以直接修改布尔类型变量的值

2、第二、三为一种,修改时:0为0,其他非零都为1


总结

常量

1. 什么是常量
   运行时,值不能改变

2. 常量分类
   字面量常量
   标识符常量

3. 定义常量两种方式(标识符常量)
   #define 常量名 值
   const 数据类型 常量名 = 值;

二进制

1. 进制
   二进制、十进制、十六进制

2. 进制转换
   

3. 原码、反码、补码
   正数和0:三码一致
   负数:反码:原码基础上,符号位不变,其他位取反
        补码:反码+1
       

数据类型

1. 整数
   int
   short
   long
   long long
   每种类型分为:signedunsigned
   等宽类型 eg:int32_tuint8_t,需要有头文件<stdint.h>

2. 浮点
   float
   double
   long double

3. 字符
   本质:单字节整数
   字面量表示:单引号
   占位符:%c
   分有符号和无符号,都是128种(2^7)
   转义字符

4. 布尔
   ① C89 #define
   ② C99 _Bool
   ③ C99 <stdbool.h>  booltruefalse


附录

VScode修改配置,提高警告等级

打开 .vscode 文件夹下的 tasks.json 文件,添加如下选项:

"-Wall"

最终效果如下:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "D:\\Program Files\\mingw64\\bin\\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-Wall",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

下述两组 两个需要挨在一起:
    第一组:
                "-g",
                "${file}",

	第二组:
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"

posted on   岌岌无名  阅读(222)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
 
点击右上角即可分享
微信分享提示