C++基础一:基本数据类型

基本数据类型

变量的定义

变量是在程序运行过程中其值可以改变的量,需要在定义之后才可以使用

变量类型 变量名

变量可以在定义的时候就赋初值

变量类型 变量名=初值

变量名一般来说可以任意取,但是需要满足几个条件:
1.不能是C语言标识符

2.变量名的第一个字符必须是字母或者下划线,除第一个字符之外的其他字符必须是字母、数字或下划线

3.区分大小写

变量类型

基本数据类型可以分为整型、浮点型、字符型

C++中包括布尔型

C++基础一:基本数据类型_第1张图片

1整型

整型一般可以分为短整型(short)、整型(int)、长整型(long long)

整型也被称为long int,长整型也称为long long int

(一)整型int,一个整数占用32bit,即4byte(32位,4字节),取值范围是-2^31~+(2^31-1)

即绝对值在10^9范围内的整数都可以定义成int型

(二)长整型long long,一个整数占用64bit,即8byte(64位,8字节),取值范围是-2^63~+(2^63-1)

例如10^10或者10^18

注意:如果long long型赋大于2^31-1的初值,则需要在初值后面加上LL,否则会编译错误

对于整型数据,可以在前面加上unsigned,表示无符号型

综上所述:
若题目中要求10^9以内或者说32位整数,就用int型来存放

若要求10^18以内或者说64位整数,就用long long型来存放

2浮点型

浮点型就是小数,可以分为单精度(float)和双精度(double)

(一)单精度float,一个浮点数占用32bit,其中1bit作为符号位,8bit作为指数位,23bit作为尾数位,可以存放的浮点数的范围是-2^128~+2^128,但是其有效精度只有6~7位

(二)双精度double,一个浮点数占用64bit,其中按照浮点数的标准,1bit作为符号位,11bit作为指数位,52bit作为尾数位,可以存放的浮点数的范围是-2^1024~+2^1024,但是其有效精度只有15~16位

%f是float和double型的输出格式

综上所述,不要使用float,碰到浮点型的数据都应该用double来存储

3.字符型

(一)字符变量和字符常量

字符常量使用ASCII码统一编码,标准ASCII码的范围是0~127,其中包含了控制字符或通信专用字符和常用的可显示字符

比如0~9、A~Z、a~z等都是可显示字符,它们的ASCII码分别是48~57、65~90、97~122

注:小写字母比大写字母的ASCII码值大32

字符常量必须用单引号标注起来,以区分是作为字符变量还是字符常量出现,因此字符常量必须用单引号标注,以表明它们是字符常量

也可以把ASCII码值直接赋给字符变量,因为在计算机内部,字符就是按ASCII码存储的

%c是char型的输出形式

(二)转义字符

ASCII码中有一部分是控制字符,是不可显示的,像换行、删除、Tab等都是控制字符,在C语言中可以用一个右斜线加一些特定的字母来表示

例如,换行通过"\n"来表示,Tab键通过"\t"来表示

由于这种情况下斜线后面的字母失去了本身的含义,因此又称为转义字符

常用的转义字符只有下面两个,

\n代表换行

\0代表空字符NULL,其ASCII码为0,注意\0不是空格

(三)字符串常量

字符串是由若干字符组成的串,C语言中没有单独一种数据类型可以存储,但C++中有string类型,只能用字符数组的方式

字符常量就是单个使用单引号标记的字符,那么字符串常量则是由双引号标记的字符集,例如"HELLO WORLD"

字符串常量可以作为初值赋给字符数组,并使用%s的格式输出

注意不能把字符串常量赋给字符变量

4.布尔型

布尔型在C++中可以直接使用,但是在C语言中必须添加stdbool.h头文件才可以使用,布尔型变量又称为bool型变量,它的取值只能是true(真)或者false(假),分别代表非零与零

在赋值时,可以直接使用true或false进行赋值,或是使用整型常量对其进行赋值,只是整型常量在赋值给布尔型变量时会自动准换为true或者false

注意,非零包括正整数和负整数,即1和-1都会转换为true

但是对计算机来说,true和false在存储时分别为1和0,因此如果使用%d输出bool型变量,则true和false会输出1和0

若有一个条件语句,系统会判断其是否为真或者为假

强制类型转换

有时需要把浮点数的小数部分切掉来变成整数,或是把整型变为浮点型来方便做除法(整数除以整数在计算机中视为整除操作,不会自动变为浮点数),或是在其他很多情况下,都会用到强制类型转换,即把一种数据类型转换成另一种数据类型

格式如下:
(新类型名)变量名,即把需要变成的类型用括号写在前面即可

如果将一个类型的变量赋值给另一个类型的变量,却没有写强制类型转换操作,那么编译器将会自动进行转换

注意在计算过程中需要转换类型,所以要手动写强制类型转换

符号常量和const常量

符号常量就是替换,即用一个标识符来替代常量,又称为宏定义或者宏替换

格式如下:
#define 标识符 常量

#define 标识符 任何语句或片段

注意末尾不加分号

另一种定义常量的方法是使用const

格式如下:
const 数据类型 变量名 = 常量;

注意末尾要加分号

两种写法都称为常量,因为它们一旦确定其值后就无法改变

运算符

常用的运算符有算术运算符、关系运算符、逻辑运算符、条件运算符、位运算符

1.算术运算符

加、减、乘、除、取模、自增、自减

对于除法运算符,需要注意的是,当被除数和除数都是整型时,并不会得到一个double浮点型的数,而是直接舍去小数部分(向下取整)

如果除数是0,会导致程序异常退出或是得到错误输出,因此在出现问题时候可以检查是否在某种情况下除数为0

加减乘除四种运算符的优先级顺序和四则运算的优先级相同

取模运算符返回被除数与除数相除得到的余数

取模运算符的优先级和除法运算符相同

自增运算符有两种写法,i++和++i,两个都可以实现把i增加1的功能,但是也有不同的地方,区别是i++是先使用i再将i加1,而++i则是先将i加1再使用i

自减运算符上同

2.关系运算符

C++基础一:基本数据类型_第2张图片

常用的关系运算符共有六种,<、>、<=、>=、==、!=

3.逻辑运算符

C++基础一:基本数据类型_第3张图片

常用的逻辑运算符有三种,&&、||、!,分别对应“与”或“非”,它们所实现的功能

4.条件运算符

条件运算符是C语言中位移的三目运算符,即需要三个参数的运算符,格式如下

A? B : C

上式的意义是如果A为真,那么执行并返回B的结果,如果A为假,执行并返回C的结果

5.位运算符

位运算符有六种

C++基础一:基本数据类型_第4张图片

由于int型的上限为2^31-1,因此程序中无穷大的数INF可以设置成(1<<31)-1(注意位运算必须加括号,因为位运算符的优先级没有算术运算符高),一般更常用的是2^30-1,它可以避免相加超过int的情况,该数字写成二进制的形式就是0x3fffffff,因此下面两个式子是等价的

const int INF=(1<<30)-1;

const int INF=0x3fffffff;

你可能感兴趣的:(C++,c++)