Error[8]: Undefined offset: 122, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

C++ 基础

目录

C++ 基础

变量

常量

字面量

符号常量-具有名称的常量

数据类型

基本类型

关系与逻辑

关系表达式

运算符优先级

变量

计算机的内存

变量指的是会随着程序运算而改变的量。


Tips: 比如用户在售卖机购买的可乐数量和爆米花数量都是不确定的,最后的总价也会各异,所以这些数量和总价都以变量的形式存在于计算机中。


维护这些变量会用到计算机的存储功能。


变量的声明

// 声明可乐数量变量 coke
int coke;
// 声明爆米花数量变量 popcorn
int popcorn;
// 声明消费总额变量 money
int money;

变量的命名规则

变量名称也叫做标识符,有固定的构造规则:

标识符是用于表示以下内容之一的字符序列:

关键字

alignas alignof and and_eq asm auto bitand bitor bool break case catch char char8_t char16_t char32_t class compl concept const const_cast consteval constexpr

constinit continue co_await co_return co_yield decltype default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline

int long mutable namespace new noexcept not not_eq nullptr operator or or_eq private protected public register reinterpret_cast requires return short signed sizeof static static_assert

static_cast struct switch template this thread_local throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while xor xor_eq

变量的初始化

// 声明消费总额变量 money,并且初始化数值为 0
int money = 0;

变量的输出

//将初始化好的消费总额打印在屏幕上,并且进行换行
cout << money << endl;
// 导入系统输入输出头文件 iostream
#include 
​
// 使用标准命名空间 std
using namespace std;
​
int main() {
    // 声明可乐数量变量 coke
    int coke;
    // 声明爆米花数量变量 popcorn
    int popcorn;
    // 声明消费总额变量 money,并且初始化数值为 0
    int money = 0;
    
    // 将初始化好的消费总额打印在屏幕上,并且进行换行
    cout << money << endl;
    
    return 0;
}
常量 字面量

数学计算关联最紧密的两类字面量——整数字面量和浮点字面量。


数据类型

在C++的变量声明中,变量名之前需要指定数据类型。


int

数据类型将会决定一个变量存储什么样的信息,从而决定变量的容量**有多大,在内存中需要分配多大的空间。


基本类型

整数类型

数值整数类型

字符类型

计算机通过ASCII编码,将128个字符映射到对应数字上,于是我们使用一个字节(8位)就可以将所有的字符表示出来。


通过查看内存,可以发现储存在类型为

// 用字符常量初始化一个 char 类型
char size_1 = 'L';
// 用整数常量初始化一个 char 类型,字符L的ASCII编码值为76
char size_2 = 76;
的变量中的实际上是一个整数,对应于这个字符的ASCII编码值。


所以,我们可以既可以使用字符常量,也可以使用字符对应的ASCII编码,来给long long类型的变量赋值。


float

字符整数类型虽然存储方式和数值整数类型相似,都是存放一个数值,但是在输出显示时是不同的。


我们可以通过以下代码来观察数值整数类型和字符整数类型的区别:

// 初始化一个 int 类型
int length = 76; 
// 用字符常量初始化一个 char 类型
char size_1 = 'L';
// 用整数常量初始化一个 char 类型,字符L的ASCII编码值为76
char size_2 = 76;
​
cout << "衣服的长度为:" << length << "厘米。


\n"; cout << "衣服的大小为:" << size_1 << "号。


\n"; cout << "衣服的大小为:" << size_2 << "号。


\n"; //cout识别到了size_1和size_2是字符类型变量,从而在输出时自动进行了转换,把数字转成了该编码对应的字符。


可以看到,程序的输出为:

衣服的长度为:76厘米。


衣服的大小为:L号。


衣服的大小为:L号。


浮点类型

表示精度

学习了C++中的各种整数类型,我们继续来看基本类型中的第二大块:浮点类型。


由于浮点数更多的应用是用来表示带小数的数字,所以我们主要从有效位数的角度讲解精度。


Tips: 需要注意的是,有效位数不会因为小数点的改变而改变,无论314000或者3.14000,它们的有效位数都是3位,多出来0可以看作是一种占位符,因为实际有意义的数字只有3个:3、1和4。


关系与逻辑 关系表达式

Tips:判断两个数是否相等,用的是=而非==,因为!=是用于赋值 *** 作的。


运算符优先级

Tips:对于一个表达式,虽然可以通过计算优先级省略掉括号,但为了代码的可读性,我们在编写时一般都选择把括号加上。


)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 123, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

C++ 基础

目录

C++ 基础

变量

常量

字面量

符号常量-具有名称的常量

数据类型

基本类型

关系与逻辑

关系表达式

运算符优先级

变量

计算机的内存

变量指的是会随着程序运算而改变的量。


Tips: 比如用户在售卖机购买的可乐数量和爆米花数量都是不确定的,最后的总价也会各异,所以这些数量和总价都以变量的形式存在于计算机中。


维护这些变量会用到计算机的存储功能。


变量的声明

// 声明可乐数量变量 coke
int coke;
// 声明爆米花数量变量 popcorn
int popcorn;
// 声明消费总额变量 money
int money;

变量的命名规则

变量名称也叫做标识符,有固定的构造规则:

标识符是用于表示以下内容之一的字符序列:

关键字

alignas alignof and and_eq asm auto bitand bitor bool break case catch char char8_t char16_t char32_t class compl concept const const_cast consteval constexpr

constinit continue co_await co_return co_yield decltype default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline

int long mutable namespace new noexcept not not_eq nullptr operator or or_eq private protected public register reinterpret_cast requires return short signed sizeof static static_assert

static_cast struct switch template this thread_local throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while xor xor_eq

变量的初始化

// 声明消费总额变量 money,并且初始化数值为 0
int money = 0;

变量的输出

//将初始化好的消费总额打印在屏幕上,并且进行换行
cout << money << endl;
// 导入系统输入输出头文件 iostream
#include 
​
// 使用标准命名空间 std
using namespace std;
​
int main() {
    // 声明可乐数量变量 coke
    int coke;
    // 声明爆米花数量变量 popcorn
    int popcorn;
    // 声明消费总额变量 money,并且初始化数值为 0
    int money = 0;
    
    // 将初始化好的消费总额打印在屏幕上,并且进行换行
    cout << money << endl;
    
    return 0;
}
常量 字面量

数学计算关联最紧密的两类字面量——整数字面量和浮点字面量。


数据类型

在C++的变量声明中,变量名之前需要指定数据类型。


int

数据类型将会决定一个变量存储什么样的信息,从而决定变量的容量**有多大,在内存中需要分配多大的空间。


基本类型

整数类型

数值整数类型

字符类型

计算机通过ASCII编码,将128个字符映射到对应数字上,于是我们使用一个字节(8位)就可以将所有的字符表示出来。


通过查看内存,可以发现储存在类型为

// 用字符常量初始化一个 char 类型
char size_1 = 'L';
// 用整数常量初始化一个 char 类型,字符L的ASCII编码值为76
char size_2 = 76;
的变量中的实际上是一个整数,对应于这个字符的ASCII编码值。


所以,我们可以既可以使用字符常量,也可以使用字符对应的ASCII编码,来给long long类型的变量赋值。


float

字符整数类型虽然存储方式和数值整数类型相似,都是存放一个数值,但是在输出显示时是不同的。


我们可以通过以下代码来观察数值整数类型和字符整数类型的区别:

// 初始化一个 int 类型
int length = 76; 
// 用字符常量初始化一个 char 类型
char size_1 = 'L';
// 用整数常量初始化一个 char 类型,字符L的ASCII编码值为76
char size_2 = 76;
​
cout << "衣服的长度为:" << length << "厘米。


\n"; cout << "衣服的大小为:" << size_1 << "号。


\n"; cout << "衣服的大小为:" << size_2 << "号。


\n"; //cout识别到了size_1和size_2是字符类型变量,从而在输出时自动进行了转换,把数字转成了该编码对应的字符。


可以看到,程序的输出为:

衣服的长度为:76厘米。


衣服的大小为:L号。


衣服的大小为:L号。


浮点类型

表示精度

学习了C++中的各种整数类型,我们继续来看基本类型中的第二大块:浮点类型。


由于浮点数更多的应用是用来表示带小数的数字,所以我们主要从有效位数的角度讲解精度。


Tips: 需要注意的是,有效位数不会因为小数点的改变而改变,无论314000或者3.14000,它们的有效位数都是3位,多出来0可以看作是一种占位符,因为实际有意义的数字只有3个:3、1和4。


关系与逻辑 关系表达式

Tips:判断两个数是否相等,用的是=而非==,因为!=是用于赋值 *** 作的。


运算符优先级

Tips:对于一个表达式,虽然可以通过计算优先级省略掉括号,但为了代码的可读性,我们在编写时一般都选择把括号加上。


)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
C++基础学习_C_内存溢出

C++基础学习

C++基础学习,第1张

C++ 基础

目录

C++ 基础

变量

常量

字面量

符号常量-具有名称的常量

数据类型

基本类型

关系与逻辑

关系表达式

运算符优先级

变量

计算机的内存

变量指的是会随着程序运算而改变的量。


Tips: 比如用户在售卖机购买的可乐数量和爆米花数量都是不确定的,最后的总价也会各异,所以这些数量和总价都以变量的形式存在于计算机中。


维护这些变量会用到计算机的存储功能。


  • 计算机的存储功能会使用内存实现。


  • 计算机中的 *** 作系统一般会把内存划分成不同区域来存储数据,以便于管理。


  • 内存中每个基本存储单元可以存放一个字节的数据,每个字节具有8位,也就是8个比特(bit)。


  • 每个内存单元有一个唯一的地址,常用一个16进制数表示和区分。


变量的声明

  • 变量的声明就是向内存申请变量,用于存放数据的过程,一般的声明方式为数据类型 变量名称


// 声明可乐数量变量 coke
int coke;
// 声明爆米花数量变量 popcorn
int popcorn;
// 声明消费总额变量 money
int money;

变量的命名规则

变量名称也叫做标识符,有固定的构造规则:

  • 只能由字⺟、数字和下划线组成;

  • 数字不可以出现在第一个位置上;

  • C++的关键字(保留字)不可以⽤做标识符;

  • 最好简单易懂,用具有对应含义的英文或者拼音来表示;

标识符是用于表示以下内容之一的字符序列:

  • 对象或变量名称

  • 类、结构或联合名称

  • 枚举类型名称

  • 类、结构、联合或枚举的成员

  • 函数或类成员函数

  • typedef 名称

  • 标签名称

  • 宏名称

  • 宏参数

关键字

alignas alignof and and_eq asm auto bitand bitor bool break case catch char char8_t char16_t char32_t class compl concept const const_cast consteval constexpr

constinit continue co_await co_return co_yield decltype default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline

int long mutable namespace new noexcept not not_eq nullptr operator or or_eq private protected public register reinterpret_cast requires return short signed sizeof static static_assert

static_cast struct switch template this thread_local throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while xor xor_eq

变量的初始化

  • 在声明变量时,也可以赋予这个变量一个初值,这被称为变量的初始化。


// 声明消费总额变量 money,并且初始化数值为 0
int money = 0;

变量的输出

  • 使用C++代码来在屏幕上展示初始化过的的消费总额,这叫做变量的输出,输出的内容是变量中保存的数值,而不是变量名称。


//将初始化好的消费总额打印在屏幕上,并且进行换行
cout << money << endl;
// 导入系统输入输出头文件 iostream
#include 
​
// 使用标准命名空间 std
using namespace std;
​
int main() {
    // 声明可乐数量变量 coke
    int coke;
    // 声明爆米花数量变量 popcorn
    int popcorn;
    // 声明消费总额变量 money,并且初始化数值为 0
    int money = 0;
    
    // 将初始化好的消费总额打印在屏幕上,并且进行换行
    cout << money << endl;
    
    return 0;
}
常量 字面量

数学计算关联最紧密的两类字面量——整数字面量和浮点字面量。


  • 整数字面量

    是没有任何小数或指数部分的数字字面量,与数学中的整数直接关联。


    • 十进制:直接写出的整数。


      例如:023-1024

    • 八进制:以数字0开头的整数,有效数字为0~7,并且不带有正负号。


      例如:01260163

    • 十六进制:以0x0X开头的整数,有效数字为0~9A~Fa~f),并且不带有正负号。


      例如:0x12a0xf39

  • 浮点字面量

    是有分数形式或指数形式的数字字面量,与数学中的小数直接关联。


    • 小数形式:由数字和小数点组成

      例如:0.6630.014.15926

    • 指数形式:在数学中,一个可以用幂的形式来表示的形式。


      在C语言中,则以eE后跟一个整数来表示以10为底数的幂数。


      • eE的左侧必须要有数字

      • eE的右侧为幂次的数值,必须为整数

      • 上述小数可以等价表示为:6.6E-130.0e00.01415926E3

  • 字符字面量-表达字符的常量

    不同于直接参与计算的整数与浮点字面量,常量中还有一类主要用来表达常见字符的常量,分为单字符字面量与转义符字面量。


    • 单字符字面量:

      通过将单个字符括在单引号内来创建字符字面量。


      例如:'a''m''F''2''}'等。


    • 转义符字面量:

      使用''开头的转义字符序列来表示一个特殊字符。


    转义字符

    Tips:有时,在C++编程中必须使用不能键入或具有特殊含义的字符。


    例如,换行符(回车),制表符,问号,引号等。


    为了使用这些字符,就会使用''开头的转义字符序列用来表示一个特殊字符。


    例如:

       `'\n'`表示换行符;
    ​
       `'\t'`表示制表符; 
    ​
       `'\''`表示单引号字符(不被解析成字符外的单引号);
    ​
       `'\\'`表示真正的斜杠字符。


    ASCII编码

    所有的字符字面量在计算机里都是有一个编码的,为了避免大家用不同的编码,造成混乱,美国的组织就出台了ASCII编码(American Standard Code for Information Interchange:美国信息交换标准代码),所有字符都采用ASCII编码,共有128个字符。


    每个字符都对应着一个0~127之间的整数。


    下面两个表格中,深灰色的列就是其右侧字符对应的ASCII编码,你可以大致浏览一下,不需要强行记忆。


    字符串字面量-构成输出的常量

    回顾我们在学习C++时会编写的第一个程序,就是用来输出Hello, World!这句话。


    #include 
    using namespace std;
    int main() {
        cout << "Hello, World!" << endl;
        return 0;
    }

    可以看到Hello, World!被一对双引号""包围,这一个整体就是一个字符串字面量。


    • 字符串字面量是由一对双引号括起来的字符序列

    • 字符串中可以包含类似于字符字面量普通字符以及转义字符

    • 字符串除了存储所包含的字符外,还额外包含一个结束标志''ASCII编码''

      0:结束符;

      ****
      ****
      ****
      对应数值为const的字符

    练习

    请使用转义字符打印一个3行4列的星号长方形:

    const int kCokePrice = 5;
    const int kPopcornPrice = 10;

    参考代码:

    #include 
    using namespace std; 
    int main() { 
        // 每行都输出4个*和一个换行符
        cout << "****\n" ;
        cout << "****\n" ;
        cout << "****\n" ;
        return 0;
    } 

    符号常量-具有名称的常量
    • 在C++中,随着程序运算不改变的量叫做符号常量,可以使用const关键字来定义并且初始化:

    int
    • int是⼀个修饰符,加在数据类型int const kCokePrice = 5;的前⾯,用来给这个变量加上一个不变的属性

      • 初始化时也可以将修饰符const与数据类型

        const 数据类型 常量名称 = 初始值;
        调换位置,写成
        数据类型 const 常量名称 = 初始值;

    • 符号常量命名时参照Google 开源项目风格指南,以 “k” 开头,大小写混合

      • 实际编程过程中的名字最好简单易懂,用具有对应含义的英文或者拼音来表示

    • 定义的时候必须进行初始化,且在初始化之后不能再进行修改与重新赋值

      • 如果试图对常量做修改,例如把它放在赋值符号的左边,就会被编译器发现并指出错误

    最后,总结一下符号常量的初始化伪代码:

    数据类型 变量名称;

    或者

    short
数据类型

在C++的变量声明中,变量名之前需要指定数据类型。


int

数据类型将会决定一个变量存储什么样的信息,从而决定变量的容量**有多大,在内存中需要分配多大的空间。


基本类型

整数类型

数值整数类型

  • 数值整数用来表示没有小数部分的数字。


    • 数值整数可以按照占用内存大小分类

      • longlong longshort以及int,占用内存越大的类型能表示的数值范围就更大。


      • longlong longshort以及int这四种数值整数类型占用的字节数递增,所以能表示的整数范围也递增。


        • short类型至少占据2个字节,即16位;一般占用2字节;

        • long在现代系统中一般占用4个字节,即32位;类型长度大于等于int类型;

        • long long类型长度至少占据4个字节,且大于等于long类型;一般占用4个字节;

        • unsigned int类型长度至少占据8个字节,且大于等于int类型;一般占用8个字节。


          超过范围将无法正常表示

    • 同时又可以按照是否表示负值

      • 分为有符号版本和无符号版本

        比如:

        • signed int就表示无符号的int类型,只能表示正值;

        • short就表示有符号的unsigned类型,可以表示负值。


        • 在不指定有无符号时,都默认是有符号版本。


      • 表示

        • 如果是无符号版本,那么一个8位的内存块可以一一对应到0~255之间的整数;

        • 如果是有符号版本,那么就会考虑负数,这个8位的内存块可以表示一128~127之间的整数。


        • 默认状态下char等四个整数类型都是符号类型,这使得它们能够表示的最大数值减小了一半左右。


        • 在确定变量的数值不会是负数的情况下,我们可以利用char关键字,加在原有数据类型之前,创建无符号的整数类型。


字符类型

  • 字符类型则专门用来存储计算机中的基本符号:英文字母、数字以及标点等。


计算机通过ASCII编码,将128个字符映射到对应数字上,于是我们使用一个字节(8位)就可以将所有的字符表示出来。


通过查看内存,可以发现储存在类型为

// 用字符常量初始化一个 char 类型
char size_1 = 'L';
// 用整数常量初始化一个 char 类型,字符L的ASCII编码值为76
char size_2 = 76;
的变量中的实际上是一个整数,对应于这个字符的ASCII编码值。


所以,我们可以既可以使用字符常量,也可以使用字符对应的ASCII编码,来给long long类型的变量赋值。


float

字符整数类型虽然存储方式和数值整数类型相似,都是存放一个数值,但是在输出显示时是不同的。


我们可以通过以下代码来观察数值整数类型和字符整数类型的区别:

// 初始化一个 int 类型
int length = 76; 
// 用字符常量初始化一个 char 类型
char size_1 = 'L';
// 用整数常量初始化一个 char 类型,字符L的ASCII编码值为76
char size_2 = 76;
​
cout << "衣服的长度为:" << length << "厘米。


\n"; cout << "衣服的大小为:" << size_1 << "号。


\n"; cout << "衣服的大小为:" << size_2 << "号。


\n"; //cout识别到了size_1和size_2是字符类型变量,从而在输出时自动进行了转换,把数字转成了该编码对应的字符。


可以看到,程序的输出为:

衣服的长度为:76厘米。


衣服的大小为:L号。


衣服的大小为:L号。


浮点类型

表示精度

学习了C++中的各种整数类型,我们继续来看基本类型中的第二大块:浮点类型。


  • 计算机用浮点数表示两类数:

    • 带小数部分的数字; 例如:圆周率3.14、黄金分割比例0.618等,这些数字在整数之间

    • 数值非常大的数字。


      例如:宇宙中原子个数约10的80次方,这个数字已经无法被double整型表示

  • C++中的浮点数分为三种类型:long doublefloat以及double,分别表示不同的精度。


  • 浮点数的精度在于它可以表示的有效位数以及指数范围。


    • 指数范围指的是可以表示的指数幂次大小;

由于浮点数更多的应用是用来表示带小数的数字,所以我们主要从有效位数的角度讲解精度。


  • 有效位数用来描述浮点数值的刻画精确程度。


    例如:3.14的有效位数是3位,3.1415926的有效位数是8位。


Tips: 需要注意的是,有效位数不会因为小数点的改变而改变,无论314000或者3.14000,它们的有效位数都是3位,多出来0可以看作是一种占位符,因为实际有意义的数字只有3个:3、1和4。


  • 在三种浮点类型中,更大的内存空间可以表示更多的有效位数:

    • float类型通常占用4个字节,有效位数为6位

    • long double类型占用的空间是<类型的两倍,即8个字节,有效位数为15位

    • <=类型一般占用16个字节的空间

关系与逻辑 关系表达式
  • 在C++中,关系运算符用于判断表达式之间的大小关系,对两边的值进行6种情况的判断:

    • 大于>和大于等于>=运算符

    • 小于==和小于等于!=运算符

    • 相等==和不相等=运算符

  • 关系运算符中,表达式结果的类型可以是字符或者数字,但不可以是字符串

  • 关系表达式返回一个布尔值:成立为1(true)代表真,不成立为0(false)代表假

Tips:判断两个数是否相等,用的是=而非==,因为!=是用于赋值 *** 作的。


  • 浮点数

    一般不会用a或者b来判断,因为可能产生表示误差

    比较两个浮点数是否相等,需要看两个数的差值是否小于一定的精度,比如:

    • 对于浮点数(a - b) < 1e-6+,如果- 如果值为真,就判断两个浮点数相等。


运算符优先级
  • 至此,我们已经学习的运算符如下:

    • 算术运算符(* / % ++ -- = <<等)

    • 赋值运算符(<等)

    • 位运算符(<= >>等)

    • 关系运算符(> >= == != && ||等)

    • 逻辑运算符(! 等)

  • 对于这些常用的运算符,按照计算优先级从高到低(左边更高,右边更低)进行排列,可以得到如下表格:

Tips:对于一个表达式,虽然可以通过计算优先级省略掉括号,但为了代码的可读性,我们在编写时一般都选择把括号加上。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/607805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)

保存