问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C++基础知识——数据类型和变量

创作时间:
作者:
@小白创作中心

C++基础知识——数据类型和变量

引用
CSDN
1.
https://m.blog.csdn.net/Spark6_/article/details/140878788

一.数据类型

现实社会中的人,分成很多“类型”,正所谓“物以类聚,人以群分”,不同类型的人,思考问题,处理的问题的方式都不一样,不同的数据类型,计算机内的处理的方式也是不同的。

计算机内的数据,也分成很多类型:
int unsigned int char
unsigned char long long long
unsigned long short unsigned short
float double 各类指针类型
枚举类型 struct 结构类型 union 联合类型
bool string 类

不同数据类型的区别:

  1. 表示意义不同
  2. 占用内存不同
  3. 表示的范围不同
  4. 使用方法不同

二.变量

变量是构建IT大厦的砖块。

1.为什么使用变量

程序在运行中,需要保存很多内容常常变化的数据。比如,射击类的游戏中不断变化的“击杀数”和“死亡数”。一个程序运行时,大量数据存储在“变量”中。数据在大量变量之间“计算”、“交换”,变量是处理数据的基本实体。

2.变量是什么

变量,是内存中的一块存储空间,即一小块内存。

3.变量和数据类型的关系

变量是一个盒子,盒子里保存了“数据”,数据又分成很多“类型”(数据类型)。
(1) 变量的类型就是变量中数据的“类型”。
(2) 变量在定义(创建)时,必须先指定它的类型。【相当于制作一个盒子时,必须先确认这个盒子是用来装什么的】。
(3) 1个变量只有一个类型,而且不能改成其他类型。

4.变量的定义

定义形式 1:

int x;
int y;

定义形式2:(不推荐)

int x , y;

定义形式3:(定义的时候,设置一个初始值)

int x = 100;

内存的存储单位-“字节”,一个字节包括八个二进制位。

5.变量的命名规范

(1) 只能包含 3 种字符(数字、大/小写字母,下划线)
(2) 不能以数字开头(即,只能以字母或下划线开头)
int 2name; //非法
(3) 不能和“关键字”同名(C语言内部已经使用的“名称”),比如类型名 int
变量名的最大长度,C语言没有明确规定。最大长度限制,取决于编译器,一般都在32以上。同时变量名最好“见名知意”,不再使用汉语拼音的简写和缩写。

命名风格:

  1. 下划线风格
    int student_age;(一般用于变量名、函数名)

  2. 小驼峰风格:第一个单词之后的单词大写
    int studentAge;(一般位于变量名、函数名)

  3. 大驼峰风格:从第一个单词开始大写
    class StudentAge;(一般用于“类名”)。

4)全部大写(一般用于“宏”)
#define MAX_AGE 30

三.用于计数的整数类型

1.int 类型

使用最多的整数类型,在内存中占用 4 个字节,表示范围 -2^31 ~ 2^31 - 1。【正负21亿左右】

2.long 长整型

long 也就是 long int 可用来存储最大的整数。在 32 位系统上,占 4 个字节,和 int 相同。在64位系统上,占 8 个字节【正负 9 百亿亿左右】

3.long long 长长整型

用来存储整数,在内存中占 8 字节,很少使用,仅用于特殊的运算。

4.short 短整型

用来存储整数。在内存上 2 字节,用于存储小范围的整数,表示范围 -2^15 ~ 2^15 - 1【正负三万多】

5.无符号数

在类型前加上 unsigned ,例如 unsinged int,unsigned long,unsigned long long,unsigned short。最小值都是0,最大值是对应的有符号数的2倍,原理如下。

四.用于单个字符的数据类型

字符类型:char。 占用一个字节。
char name = 'a';

内存示意图:

PS:字符的实际表示:
所有的字符,使用对应的 ASCII 值来存储。为什么呢?因为计算机中只能存储 0 和 1 的组合。
ASCII 码,使用 1 个字节(包含 8 个二进制位,即 8 个 0 和 1 的组合)
比如:'A',用 0100 0001 来表示,就是65
'B',用 0100 0010 来表示,就是66
char name = 'a';
char name = 'a'; 等效于 char name = '97';

char 类型的另一种用法:用来表示小范围的整数。
实例:

int x = 0;
x = 'a' + 1; // 97 + 1

五.用于精确计算的数据类型

需要精确计算的数字,工程应用,用整数类型并不合适。

1. float 类型 (单精度浮点数类型)

用来存储带小数部分的数据。在内存中占 4 个字节。表示范围:-3.410^38 ~ 3.410^38。精度:最长 7 位有效数字(7 位10 进制位)。
float y = 1.123456789; // 精度只能取到 1.1234568,在第 7 位(整数部位不算)是四舍五入后的值。

float 类型的存储方式:
符号位:0 表示正数,1 表示负数
阶码:指数 + 127
转化过程:13.625的转化

2. double 类型(双精度类型)

用来存储小数部分的数据,8 个字节。具体的存储类型和 float 相似。但是阶码为 11 位,尾数为52位。
表示范围:-1.7 * 10 ^ 308 ~ 1.7 * 10 ^ 308
精度:最长 16 位有效数字
double y = 1.12345678901;

3.浮点类型的常量

带小数的常量默认都是 double 类型
3.14 是 double 类型
3.14f 强制为 float 类型
可以用“科学计数法”表示浮点类型的常量,1.75E 或 1.75e ,1.75e 就是 1.75 乘以 10 的 5 次方(100000),175000.0

注意:
1 是 int 类型的常量
1.0 是 double 类型的常量

4.浮点数据的输出控制

一般,浮点数的默认精度就是6,为了符合实际开发,我们就需要修改浮点数的精度。

#include <iostream>
#include <Windows.h>
using namespace std;
int main(void) {
    double value = 12.3456789;
    
    // 默认精度是6,所以输出为 12.3457
    //(默认情况下,精度是指总的有效数字)
    cout << value << endl;
    // 把精度修改为4,输出 12.35,对最后一位四舍五入
    // 精度修改后,持续有效,直到精度再次被修改
    cout.precision(4);
    cout << value << endl;
    // 使用定点法,精度变成小数点后面的位数
    // 输出 12.3457
    cout.flags(cout.fixed);
    cout << value << endl;
    // 定点法持续有效
    // 输出 3.1416
    cout << 3.1415926535 << endl;
    // 把精度恢复成有效数字位数
    cout.unsetf(cout.fixed);
    cout << value << endl;		  //输出 12.35
    cout << 3.1415926535 << endl; //输出 3.142
    system("pause");
    return 0;
}  

cout.precision(4) 表示将精度修改为4,输出数字的总共位数就是4,精度修改后持续有效,直到精度再一次被修改。
cout.flags(cout.fixed) 表示定点法,精度修改为小数点后面的位数,也就是输出小数点后四位。
cout.unsetf(cout.fixed) 表示将精度恢复成有效数字位数。

六.常量

将一个比较容易让人迷糊的问题。

1. 字面常量

int 型字面常量:1,2,3,100。
long 型字面常量:200L(或者200l,建议使用大写字母L)。
long long 型字面常量:1000000000000LL(建议使用大写字母LL)。
char 型字面常量:'a','b','X','-'。
float 型字面常量:3.14f (变量和常量是有区别的)。
double 类型常量:3.0,3.14

2. 16进制常量

以 0x 作为前缀。
123 = 1100 + 210 + 31
0x11 = 1
1 + 16*1 = 17(十进制)
10 进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 进制 0 1 2 3 4 5 6 7 8 9 10 A B C D E

3. 8 进制常量

以 0 作为前缀。
011 相当于 9。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号