5.变量

5.变量


5.1 知识点

折叠代码

功能说明

  • 作用: 可将中间包裹的代码折叠起来,避免代码过于凌乱。
  • 本质: 编辑器提供的预处理指令,仅在编辑时有效,发布或执行时会被自动删除。

语法结构

折叠代码的主要作用是让编程逻辑更加清晰。其语法结构如下:

#pragma region 分组名
#pragma endregion

示例

#pragma region 我的分组
//代码
#pragma endregion

如何声明变量

基础规则

变量是用于存储各种不同类型数值的容器。以下是变量声明的固定写法:

变量类型 变量名 = 初始值;
int i = 1;

关键点

  1. 变量类型:表示变量存储的数据类型。
  2. 变量名:由开发者自定义,但需遵循命名规则。
  3. 初始值:类型必须与变量类型一致。
  4. 固定符号: =; 为不可省略的语法。

注意: 变量必须先声明后使用,不能无中生有。

有符号的整形变量

有符号短整型

short ([signed] short [int]) 
存储范围:-32768 ~ 32767

示例:

short s = 1;
signed short s2 = 2;
signed short int s3 = 3;
short int s4 = 4;

有符号整型

int ([signed] int)
存储范围:-21亿多 ~ 21亿多

示例:

int i = -10;
signed int i2 = 2000000000;

有符号长整型

long ([signed] long [int])
存储范围:-21亿多 ~ 21亿多 或 -9223亿亿多 ~ 9223亿亿多

示例:

long l = 10;
signed long l2 = 12l;
signed long int l3 = 13L;
long int l4 = 2000000000L;

有符号长长整型

long long([signed] long long [int])
存储范围:-9223亿亿多 ~ 9223亿亿多

示例:

long long ll = 200000000000;
signed long long ll2 = 2ll;
long long int ll3 = 3LL;
signed long long int ll4 = 4LL;

无符号的整形变量

无符号短整型

unsigned short (unsigned short [int])
存储范围:0 ~ 65535

示例:

unsigned short us = 50;
unsigned short int us2 = 60;

无符号整型

unsigned (unsigned [int])
存储范围:0 ~ 42亿多

示例:

unsigned u = 4200000000;
unsigned int u2 = 2U;
unsigned int u3 = 3u;

无符号长整型

unsigned long (unsigned long [int])
存储范围:0 ~ 42亿多 或 0 ~ 18446亿亿多

示例:

unsigned long ul = 4200000000;
unsigned long int ul2 = 20ul;
unsigned long int ul3 = 30UL;

无符号长长整型

unsigned long long (unsigned long long [int])
存储范围:0 ~ 18446亿亿多

示例:

unsigned long long ull = 10000000000000;
unsigned long long ull2 = 2ull;
unsigned long long ull3 = 3ULL;

浮点数(小数)

单精度浮点数

float
存储范围:-3.4 * 10^-38 ~ 3.4 * 10^38
存储 6/7 位有效数字

示例:

float f = 1.4F;
float f2 = 1234567890.0f;
float f3 = 1.23456f;
float f4 = 1.234f;

双精度浮点数

double
存储范围:-1.7 * 10^-308 ~ 1.7 * 10^308
存储 15/16 位有效数字

示例:

double d = 1.5;

长双精度浮点数

long double
存储范围:-1.1 * 10^-4932 ~ 1.1 * 10^4932
存储 18/21、33/36 位有效数字

示例:

long double ld = 1.6l;
long double ld2 = 1.7L;

特殊类型

布尔类型

bool
表示真假类型:`true` (1) 或 `false` (0)

示例:

bool b = true;
bool b2 = false;

字符类型

char
存储单个字符(ASCII 编码)

示例:

char a = 'a';
char tao = '韬'; // 无法正常打印,超出存储范围

字符串类型

string
存储多个字符,无上限,支持多种编码规则

示例:

string str = "韬老狮爱学习,好好学习,天天向上";

为什么有那么多不同类型的变量

不同变量类型存储范围和占用的内存空间不同,应根据实际需求选择合适的数据类型。

示例:

string myName = "韬老狮";
short age = 18;
float height = 177.5f;
float weight = 75.5f;
bool sex = false; // true为女,false为男

口诀:数字用int,小数用floatdouble,字符串用string,真假用bool

多个相同类型的变量同时声明

示例:

int a1 = 1, a2 = 2, a3 = 3;
string str1 = "123", str2 = "韬老狮";

变量初始化相关

变量声明时可以不设置初始值,但不建议这样写。

示例:

int bb1, bb2 = 99, bb3;
bb1 = 10;
bb3 = 12;

输出:

10
99
12

5.2 知识点代码

Lesson05_变量.cpp

#include <iostream>
using namespace std;
int main()
{
    std::cout << "变量\n";

    #pragma region 知识点一 折叠代码

    #pragma region 我的分组
    #pragma endregion

    //主要作用 是让我们编程时 逻辑更加清晰
    //它是由 
    //#pragma region 分组名
    //#pragma endregion
    //配对出现的(region是区域的意思 pragma是编译指令的意思)
    //它的具体作用 是可以将中间包裹的代码折叠起来 避免代码太凌乱
    //本质是 编辑器提供给我们的 预处理指令 
    //它只会在编辑时有用 发布了代码 或执行代码 它会被自动删除

    #pragma endregion

    #pragma region 知识点二 如何声明变量

    #pragma region 基础规则

    //变量  可以变化的容器   
    //变量 就是用来存储各种不同类型数值的 一个容器
    //不同的 变量类型 可以存储不同类型的值

    //变量声明固定写法
    // 变量类型 变量名 = 初始值;
    // int i = 1;
    //  1.变量类型 —— 基础变量类型,有14种变化
    //  2.变量名 —— 我们自定义 要按照一定规则
    //  3.初始值 —— 一定要和变量类型是统一 
    //  4.= 和 ;  —— 是固定的 不变的
    //注意:变量的使用和修改 不能无中生有 必须要先声明再使用

    //变量类型记忆关键点
    // 一定要死记硬背 各种变量类型的关键字 
    // 一定要记忆 各种不同变量类型 所能存储的范围
    // 一定要记住 各种不同变量类型 所能存储的类型

    //注意:存在更多的变量类型
    //我们将要学习的变量类型是较为常用的内容
    //C++还有很多其他的变量类型,即使现在不知道,也不影响我们的学习和编程
    //我们以后需要时再进行补充

    #pragma endregion

    #pragma region 1.有符号的整形变量 

    //能存储 一定范围 正负数包括0的变量类型
    //这里的符号你可以理解成 可以表示有负号的整数

    // 1-1.有符号短整型:
    //     short ([signed] short [int]) 
    //     存储范围:-32768 ~ 32767
    cout << "有符号短整形:\n";
    short s = 1;
    cout << s << endl;//1
    signed short s2 = 2;
    cout << s2 << endl;//2
    signed short int s3 = 3;
    cout << s3 << endl;//3
    short int s4 = 4;
    cout << s4 << endl;//4

    // 1-2.有符号整型:
    //     int ([signed] int) 
    //     存储范围:-21亿多 ~ 21亿多
    cout << "有符号整形:\n";
    int i = -10;
    cout << i << endl;//-10
    signed int i2 = 2000000000;
    cout << i2 << endl;//2000000000

    // 1-3.有符号长整形:
    //     long ([signed] long [int]) 
    //     存储范围:-21亿多 ~ 21亿多 或 -9223亿亿多 ~ 9223亿亿多 
    //     可以加上后缀,明确变量类型:l/L
    //     注意:long的范围可能不同 是因为在不同操作系统(Windows、UNIX/Linux等等)上 
    //          它所占的存储空间不同,在windows上它往往和int的存储空间一样
    cout << "有符号长整形:\n";
    long l = 10;
    cout << l << endl;//10
    signed long l2 = 12l;
    cout << l2 << endl;//12
    signed long int l3 = 13L;
    cout << l3 << endl;//13
    long int l4 = 2000000000L;
    cout << l4 << endl;//2000000000

    // 1-4.有符号长长整形:
    //     long long([signed] long long [int]) 
    //     存储范围:-9223亿亿多 ~ 9223亿亿多 
    //     可以加上后缀,明确变量类型:ll/LL
    cout << "有符号长长整形:\n";
    long long ll = 200000000000;
    cout << ll << endl;//200000000000
    signed long long ll2 = 2ll;
    cout << ll2 << endl; //2
    long long int ll3 = 3LL;
    cout << ll3 << endl; //3
    signed long long int ll4 = 4LL;
    cout << ll4 << endl; //4

    #pragma endregion

    #pragma region 2.无符号的整形变量 

    //能存储 一定范围 0和正数的变量类型

    //2-1.无符号短整型
    //     unsigned short (unsigned short [int]) 
    //     存储范围:0 ~ 65535
    cout << "无符号短整形:\n";
    unsigned short us = 50;
    cout << us << endl;//50
    unsigned short int us2 = 60;
    cout << us2 << endl;//60

    //2-2.无符号整型
    //     unsigned ( unsigned [int])
    //     存储范围:0 ~ 42亿多
    //     可以加上后缀,明确变量类型:u/U
    cout << "无符号整形:\n";
    unsigned u = 4200000000;
    cout << u << endl;//4200000000
    unsigned int u2 = 2U;
    cout << u2 << endl;//2
    unsigned int u3 = 3u;
    cout << u3 << endl;//3

    //2-3.无符号长整型
    //     unsigned long (unsigned long [int])
    //     存储范围:0 ~ 42亿多 或 0 ~ 18446亿亿多 
    //     可以加上后缀,明确变量类型:UL/ul
    //     注意:unsigned long的范围可能不同 是因为在不同操作系统(Windows、UNIX/Linux等等)上 
    //           它所占的存储空间不同,在windows上它往往和int的存储空间一样
    cout << "无符号长整形:\n";
    unsigned long ul = 4200000000;
    cout << ul << endl;//4200000000
    unsigned long int ul2 = 20ul;
    cout << ul2 << endl;//20
    unsigned long int ul3 = 30UL;
    cout << ul3 << endl;//30

    //2-4.无符号长长整型
    //     unsigned long long (unsigned long long [int])
    //     存储范围:0 ~ 18446亿亿多 
    //     可以加上后缀,明确变量类型:ull/ULL
    cout << "无符号长长整形:\n";
    unsigned long long ull = 10000000000000;
    cout << ull << endl;//10000000000000
    unsigned long long ull2 = 2ull;
    cout << ull2 << endl;//2
    unsigned long long ull3 = 3ULL;
    cout << ull3 << endl;//3

    #pragma endregion

    #pragma region 3.浮点数(小数)

    //浮点数学习关键点
    //浮点数存储的范围看似很大
    //但是会损失一些准确性
    //满足限制条件时,并不会带来准确性问题
    //当超过一些限制时,它并不能准确的表示一个数(会存在误差)

    //3-1.单精度浮点数
    // float
    // 存储范围:-3.4*10^-38 ~ 3.4*10^38
    // -0.00000000000000000000000000000000000034 ~ 340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    // 关键点:
    // 1.声明时在小数数值后面需要加一个f/F
    //		是因为c++中 声明的小数 默认是double的类型 加f 是告诉系统 它是float类型
    // 2.存储6/7位有效数字 (对于过大和过小的数,它并不能保证存储数值的准确性)
    //		有效数字 是从左到右从非0处开始算有效数字的 
    //		1.123 有4位有效数字
    //		1004 有4位有效数字
    //		0.004 有1位有效数字
    //		0.104 有3位有效数字
    //		当超过有效数字后,会对后面的数进行四舍五入,但是再后面的数字就无法保证精度了
    //		用 cout 打印浮点数 会默认转换为6位有效数字的精度输出内容
    cout << "单精度浮点数:\n";
    float f = 1.4F;
    cout << f << endl;//1.4
    float f2 = 1234567890.0f;
    cout << f2 << endl;//1.23457e+09
    float f3 = 1.23456f;
    cout << f3 << endl;//1.23456
    float f4 = 1.234f;
    cout << f4 << endl;//1.234

    //3-2:双精度浮点数
    // double
    // 存储范围:-1.7*10^-308 ~ 1.7*10^308
    // 关键点:
    // 1.C++中默认声明的小数是double的类型 
    // 2.存储15/16位有效数字
    cout << "双精度浮点数:\n";
    double d = 1.5;
    cout << d << endl;//1.5

    //3-3.长双精度浮点数
    // long double
    // 存储范围:-1.1*10^-4932 ~ 1.1*10^4932 等 不同操作系统上空间可以不同
    // 存储18/21、33/36位有效数字
    // 关键点:
    // 需要加上l/L后缀
    cout << "长双精度浮点数:\n";
    long double ld = 1.6l;
    cout << ld << endl;//1.6
    long double ld2 = 1.7L;
    cout << ld2 << endl;//1.7

    #pragma endregion

    #pragma region 4.特殊类型

    //4-1.布尔类型:
    //    bool true false 表示真假的数据类型  真假类型
    //    C++中 bool被当作整型对待 因此 true代表1 false代表0
    cout << "bool类型:\n";
    bool b = true;
    cout << b << endl;//1
    bool b2 = false;
    cout << b2 << endl;//0

    //4-2.字符类型:
    //    char 是用来存储单个字符的变量类型
    //         但是它不能用来存储所有字符,只用来存储ASCII编码的字符,例如中文就无法正常存储
    //          C++中 char也能被当作整型对待 字符对应的整数就是它的ASCII码值
    cout << "字符类型:\n";
    char a = 'a';
    cout << a << endl;//a
    char tao = '韬';
    cout << tao << endl;//无法正常打印,因为超出存储范围

    //4-3.字符串类型:
    //    string 用来存储多个字符的 没有上限,并且它可以用来存储任何字符,因为它采用的编码规则更广泛
    cout << "字符串类型:\n";
    string str = "韬老狮爱学习,好好学习,天天向上";
    cout << str << endl;//韬老狮爱学习,好好学习,天天向上

    #pragma endregion

    #pragma endregion

    #pragma region 知识点三 为什么有那么多不同的变量类型

    // 不同的变量 存储的范围和类型不一样 本质是占用的内存空间不同
    // 选择不同的数据(变量)类型装载不同的数据

    //姓名
    string myName = "韬老狮";
    //年龄
    short age = 18;
    //身高
    float height = 177.5f;
    //体重
    float weight = 75.5f;
    //性别 true女 false男
    bool sex = false;

    //口诀:
    //数字用int  小数用float或double  字符串用string  真假用bool

    #pragma endregion

    #pragma region 知识点四 多个相同类型变量 同时声明

    //多个同类型变量声明 
    // 固定写法
    // 变量类型 变量名 = 初始值,变量名 = 初始值,变量名 = 初始值...; 
    cout << "多个相同类型变量同时声明:\n";
    int a1 = 1, a2 = 2, a3 = 3;
    cout << a1 << endl;//1
    cout << a2 << endl;//2
    cout << a3 << endl;//3
    string str1 = "123", str2 = "韬老狮";
    cout << str1 << endl;//123
    cout << str2 << endl;//韬老狮

    #pragma endregion

    #pragma region 知识点五 变量初始化相关

    cout << "变量初始化相关:\n";
    //变量声明时 可以不设置初始值 但是不建议这样写 这样不安全
    int bb1, bb2 = 99, bb3;
    bb1 = 10;
    bb3 = 12;
    cout << bb1 << endl;//10
    cout << bb2 << endl;//99
    cout << bb3 << endl;//12

    #pragma endregion
}

5.3 练习题

请默写出我们学习的14种变量类型

  1. 有符号的整型

    • short
    • int
    • long
    • long long
  2. 无符号整型

    • unsigned short
    • unsigned
    • unsigned long
    • unsigned long long
  3. 浮点数

    • float
    • double
    • long double
  4. 特殊类型

    • bool
    • char
    • string

下面代码的输出结果是?

double num = 36.6;
cout << "num" << endl;

输出结果:
num
因为输出的是"num"字符串,而不是double类型的num变量。

声明变量时,在数值后面加的这些后缀L、LL、U、UL、ULL、F,分别代表什么?

  • L —— longlong double
  • LL —— long long
  • U —— unsigned
  • UL —— unsigned long
  • ULL —— unsigned long long
  • F —— float

请定义一系列变量来存储你的名字、年龄、性别、身高、体重、家庭住址等,并打印出来。

string name = "韬老狮";
cout << "我的姓名是:" << name << endl;

unsigned short age = 18;
cout << "我的年龄是:" << age << endl;

bool sex = false; // true(1)是女 false(0)是男
cout << "我的性别是:" << sex << endl;

float height = 177.5f;
cout << "我的身高是:" << height << endl;

float weight = 75.5f;
cout << "我的体重是:" << weight << endl;

string address = "广州";
cout << "我的地址住在:" << address << endl;

小明的数学考试成绩是80,语文的考试成绩是78,英语的考试成绩是98,请用变量描述并打印

unsigned short shuxue = 80;
unsigned short yuwen = 78;
unsigned short yingyu = 98;

cout << "我的数学成绩是" << shuxue << endl;
cout << "我的语文成绩是" << yuwen << endl;
cout << "我的英语成绩是" << yingyu << endl;

5.4 练习题代码

Lesson05_练习题.cpp

#include <iostream>
using namespace std;
int main()
{
    std::cout << "变量 练习题\n";

    #pragma region 练习题一

    //请默写出我们学习的14种变量类型

    //1.有符号的整型
    // short
    // int
    // long
    // long long
    //2.无符号整型
    // unsigned short
    // unsigned
    // unsigned long
    // unsigned long long
    //3.浮点数
    // float
    // double
    // long double
    //4.特殊类型
    // bool
    // char
    // string

    #pragma endregion

    #pragma region 练习题二

    /*下面代码的输出结果是?
      double num = 36.6;
      cout << "num" << endl;*/
    double num = 36.6;
    cout << "num" << endl;//num 因为输出的是"num"字符串 不是double类型的num变量

    #pragma endregion

    #pragma region 练习题三

    //声明变量时,在数值后面加的这些后缀L、LL、U、UL、ULL、F,分别代表什么?

    // L —— long、long double
    // LL —— long long
    // U —— unsigned
    // UL —— unsigned long
    // ULL —— unsigned long long
    // F —— float

    #pragma endregion

    #pragma region 练习题四

    //请定义一系列变量来存储你的名字、年龄、性别、身高、体重、家庭住址等,并打印出来。

    string name = "韬老狮";
    cout << "我的姓名是:" << name << endl;
    unsigned short age = 18;
    cout << "我的年龄是:" << age << endl;
    bool sex = false;//true(1)是女 false(0)是男
    cout << "我的性别是:" << sex << endl;
    float height = 177.5f;
    cout << "我的身高是:" << height << endl;
    float weight = 75.5f;
    cout << "我的体重是:" << weight << endl;
    string address = "广州";
    cout << "我的地址住在:" << address << endl;

    #pragma endregion

    #pragma region 练习题五

    //小明的数学考试成绩是80,语文的考试成绩是78,英语的考试成绩是98,请用变量描述并打印

    unsigned short shuxue = 80;
    unsigned short yuwen = 78;
    unsigned short yingyu = 98;
    cout << "我的数学成绩是" << shuxue << endl;
    cout << "我的语文成绩是" << yuwen << endl;
    cout << "我的英语成绩是" << yingyu << endl;

    #pragma endregion

}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏