我的C++学习日记——变量和基本类型(一)
来源:互联网 发布:迪杰斯特拉算法视频 编辑:程序博客网 时间:2024/05/22 07:53
一、C++定义了一系列的内置基本类型,包括算数类型(arithmetic type)和void类型,其中算数类型有字符,整形,浮点和布尔型。
1、布尔型:只有两种取值,true和false;
2、字符型:C++定义了多种字符类型
(1)char是基本的字符型,一个char要保证在机器中放置和字符相关的数值,即比如ASCII值。所以char通常和一个机器字节一样大。
(2)剩下的wchar_t、char16_t、char32_t用来扩展字符放置。wchar_t保证能够存放任何最大的机器扩展字符,char16_t和char32_t用来存放统一码。
3、整形有short、int、long int、long long,其中long long是C++11新标准中加入的。他们的最小空间分别是short 2字节,int 2字节,long int 4 字节,long long 8字节。并且他们的关系是:int 至少和short 一样长,long 至少和int 一样长,long long 至少和long 一样长。
4、浮点有float(4字节)、double(8字节)、long double(12或16字节),float一般能够保留7为有效数字,double一般能保留16位有效数字。
关于signed和unsigned:
(1)各种类型除bool之外,其余默认都为signed类型,如果要定义unsigned类型就在类型前加unsigned,只有unsigned默认为unsigned int 。
(2)C++明确说明应该把数值范围均分用来表示正数和负数。比如signed char 无符号是为0-255,有符号时是-128-127。
类型使用的说明:
(1)在明确知道数值不为负的情况下使用unsigned类型,书上这么说,但是我觉得在使用unsigned如果和signed类型计算时会把signed转换为unsigned,容易出错,而默认类型是signed的,这样虽然得到了更大的存储范围,但是程序和能比较容易出问题。
(2)整形一般用int表示,因为short太短了,而long在大多数实现中和int相同,因此用int比较好,在数值很大的时候用long long。
(3)浮点型一般用double,因为float精度太小,long double用的比较少。
关于类型转换:
(1)把浮点型赋值给整形时,会丢失小数点后面的值,
int a=3.14 //a=3
也有可能整数部分太大而整形无法存储。
(2)把整形赋值给浮点时,会把整形转换为浮点。
double b=5 //b=5.0(3)当把一个超出范围的值赋给一个unsigned类型时,保存的值是目标类型能存储的最大值除以该值的余数。比如把-1给unsigned char,得到255。
(4)当把一个超出范围的值赋给一个signed类型时,结果是未定义的。
(5)当一个unsigned值和一个signed值一个进行运算时,会把signed值转换为unsigned。
二、变量
关于变量的初始化:
C++11中变量的初始化有4种方式:
//a=1int a=1;int b(1);int c={1};int d{1};
前两种方式和后两种方式最大的区别是用{}来初始化会更加的安全,用{}初始化是是不允许数值丢失的,即不能
int a{3.14}
而前两种则可以通过。
三、复合变量
复合变量是依据其他变量定义的,这里说明引用和指针。
1、引用:
引用可以理解为被引用变量的另一个名字,可以用它来间接操作被引用变量:
int a=1;int &b=a; //b为a的一个引用
则b是对a的一个引用,操作b即是操作a。
需要注意的:
(1)引用必须与被引用的变量是相同类型。
(2)引用必须在定义时初始化,一经初始化无法改变。
2、指针:
指针也是一种可以间接操作其他变量的类型:
int a=1;int *p=&a;//p为指向a的一个指针,&意为取地址这样可以通过*p来对a进行a能够进行个任何操作。
指针和引用的区别:
(1)指针是一个变量而引用不是,指针有自己的内存空间,空间内是目标变量的地址值,而引用没有。
(2)指针不用在定义是初始化,并且可以改变指向的对象。
指针操作:
(1)空指针:
int *p1=0;int *p2=nullptr;int *p3=NULL;
其中nullptr是C++11中新定义的。
(2)指针的比较,两个指向同意地址或者都为0的指针在比较时为相同,否则不同。
(3)空指针,可以把任何类型的指针赋给空指针,但是不能进行操作,
int a=1;int *p=&a;void *pv=p;
因为指针的类型决定了指针从起始内存位置向后控制的内存数量,并且也决定了内存中的内容可以进行的运算和操作,空指针无法提供这一信息,因此不能进行操作。空指针通常用来操作内存而不是内存中的值。
(4)对指针的引用:
int a=1;int *p=&a;int *&r=p;对于r的数据类型可以这样确定,从右向左看,首先是&,说明它是一个引用,其次是*,说明引用的是一个指针。
今天就到这里,明天继续学习。
- 我的C++学习日记——变量和基本类型(一)
- C++学习日记11——变量和基本类型
- C++primer学习笔记(一):第二章.变量和基本类型
- C++ Primer 学习笔记(一)——变量和基本类型
- C++编程学习笔记——基础篇(一)变量和基本类型
- C++ 学习笔记(一) 变量和基本类型
- c++primer 学习笔记(2.0)变量和基本类型
- C++primer 学习(二)变量和基本类型
- Android学习日记—Java变量的类型
- 我的C++学习日记——关于const数值变量,指针和引用的理解
- C++ 变量和基本类型(一)
- 面向对象的学习(一)—基本类型和对象类型的区别
- 2.变量和基本类型(c++)
- 变量和基本类型一
- c++primer(第五版)学习过程中的总结——第二章变量和基本类型
- C++primer——第二章 变量和基本类型
- C++Primer读书笔记——变量和基本类型补充
- C++:基本类型和变量
- Ubuntu下删除VMware的方法
- 失败的一天
- 各种SIM卡尺寸
- 北漂开始了
- DDSCAT7.1编译及使用
- 我的C++学习日记——变量和基本类型(一)
- launcher 总结
- hdu 1164 数论的简单定理
- 自定义ExtJS控件之Ext下拉树和Ext下拉表格
- 深入分析Windows和Linux动态库应用异同
- C++须知(部分)
- launcher 启动过程
- JNI总结
- hdu——1004