1.2 数据类型

一、C++标准数据类型

(一)整型(int)

整型可分为8种,只能用于存储整数。
long long 多用于存储位数较多的整数,无符号数据类型用于存储非负数。

(二)实型

一个实型数据用来存储实数,实型包括正实数、负实数和零。C++语言中表示实型变量的形式有两种。
①十进制表示法
这是人们日常使用的带小数点的表示方法。
如3,0.0,+5.61,-8.0,-6.050等都是实型常量。
②科学记数法
科学记数法是采用指数形式的表示方法,如1.25x10^5可表示成1.25E+05.在科学记数法中,字母“E"表示10这个“底数”,而E之前为一个十进制表示的小数,称为尾数,E之后必须是一个整数,称为“指数”。
如-1234.56E+26, +0.268E- 50,1E5 是合法形式,而E5,E,1.2E+0.5都不是合法的实数。
C++语言支持三种实型,它们是float(单精度实型)、double(双精度实型)、long double(长双精度实型)。每一种类型规定了相应的实数取值范围、所使用的存储空间(字节数)以及能达到的精度(有效位数)。float 在空间允许的情况下没有必要使用,都应使用double提高精度。
布尔变量常用于判断,当然手写一个类似的函数也可以的。

(三)字符型

从属于数值。

1.普通表现形式
字符常量是由单个字符组成的,所有字符采用ASCII编码,ASCII码共包括128个字符,程序中通常用一对‘’将单个字符括起来表示一个字符常量。我们较多使用的是ASCII打印字符。

'a'是字符常量,而a则是一个标识符
'3'表示一个字符常量(ASCII码值为51),而3则表示一个整数 

字符型变量的取值范围取决于计算机系统所使用的字符集
ASCII(美国标准信息交换码)字符集规定了每个字符所对应的编码
一个字符以其对应的ASCII码的二进制形式存储在内存中,一个字节,保存一个字符(英文字母、数字、符号)
字符常数就是一个普通整数,也可参与各种数学运算;每个字符具有一个0~255之间的数值,可从ASCII表查出
未来的趋势是任何字符,无论英文、中文还是其它文字,都用两个字节来表示。这种编码叫做UNICODE
在这里插入图片描述
2.转义字符
一些特殊字符(无法从键盘输入或者另有他用)用转义字符表示
共三种用法:表示转义字符、表示特殊字符、表示所有字符。
在这里插入图片描述
换行即将光标移到下一行开始处
水平制表即光标移到下一个水平制表位置。(区分于空格)
回车(不换行)就是光标移到当前行开始处。
实例:数据类型存储空间大小

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main(){
 int x;
 short y;
 long long z;
 bool bo;
 cout<<sizeof(x)<<' '<<sizeof(y)<<' '<<sizeof(z)<<' '<<sizeof(bo);
 return 0;
}

在这里插入图片描述
sizeof用于测量对象或者类型所占字节数(长度)。用于string类型时会默认在其后加一个空字符,多一个字节。

(四)数据类型转换

在这里插入图片描述
c++中,不同数据类型的运算对象进行混合运算,或者需要将一个表达式的结果转换成另一个类型时,就需依据数据类型转换规则进行转换。
整型、实型、字符型数据间可以混合运算。在这种情况下,需要将不一致的数据类型转换成一致的数据类型,然后进行运算。为保证运算精度,系统在运算时的转换规则是将存储长度较短的运算对象转成在储长度较长的类型,然后再进行处理。
【说明】
(1)纵向箭头表示必定会进行的转换,如float型数据必先转换为double型数据,然后与其他操作数进行运算。与此类似,char型或short 型数据必先转换为int 型数据,然后进行运算。
(2)横向箭头表示当运算对象为不同类型数据时的转换方向,如int型数据与unsigned型数据进行运算,int型转换为unsigned 型后方可进行运算。int 型与double型进行运算,int型转为double之后运算。
【规则】
(1)float double型赋值给int 型,直接截断小数。
例如.“int i=f+0.6,”,f的值为4.0.右边算术表达式运算后的结果为4.6的double型数据,根据上述转换原则,直接舍弃小数,所以f的值为4。
(2)int、char型赋值给float、 double型:补足有效位以进行数据类型转换。例如:“float f=4;” ,float为7位有效数字,所以f的值为4.000 0000
(3)char型(1字节)赋给int型(4字节):数值赋给int型的低8位,其他位补0。
(4)long int型赋值给int 型:long int 型截断低字节给int型
(5)int型赋值给long int型:赋给long int 型的低16位、如果int型的最高位是0,则long int的高16位全为0;如果int型的最高位是1,则long int型的高16位全为1(称为“符号扩展”)。
(6)unsigned int型赋值给int型:直接传送数值。
(7)非unsigned int型赋值给位数相同的unsigned int型:直接传送数值。
强制类型转换
在C++语言中,还允许强制类型转换,即将某一数据的数据类型转换为指定的另一种数据类型,强制类型转换只是临时转换。强制转换运算符组成的运算表达式的一般形式为:(类型名)(表达式)
例如:已知有变量定义“int b=7;float a=2.5,c=4.7;”,求下面算术表达式的值。a+ (int)(b/3* (int)(a+c)/2. 0)%4根据运算符的结合性规则,表达式要自左至右执行,b/3为2,2* (int)(a+c)为14.14/致的数据类2.0为7.0.强制类型转换后为7,7%4为3,a的值2.5与3相加,最终结果为5.5。

二、C语言数据类型

(C与C++的区别,以及对上述内容的补充)

(一)常量与变量

1.C语言程序处理的数据形式
常量(constant):在程序中使用的一些具体的数、字符。在程序运行过程中,其值不能被更改。
如123.145.88、‘m’、TRUE(此处注意字母都要大写)等。
变量(variable):其值在程序执行过程中是可以改变的
2.C程序常见符号分类
关键字(Keyword):又称保留字( C Reserved Word )
标识符(Identifier):系统预定义标识符(C Standard Identifier)、用户自定义标识符(变量,函数名,……)
运算符(Operator)
分隔符(Separator):空格、回车/换行、逗号等
其他符号:{和}标识函数体或语句块,//是程序注释的定界符
常量(Constant)
4.常量
整型:默认为int。有3种表现形式。
(1)十进制形式。如99、- 1。
(2)八进制形式。以数字0打头,由0~7构成,如012,表示八进制整数12,即(12)8。(8和下文的16都是下角标)
(3)十六进制形式。以0x打头,如0x12A,表示十六进制整数12A,即(12A)16。
实型:默认为double
如3.1、-6.1E+2、 2.73F, 2.73L(科学记数法)。
字符型(如 ‘z’, ‘3’, ‘$’, ),用\开头的字符为转义字符, 代表1个字符。
用单引号括起来的字符,如’k’、‘5’、%’、 ‘\n’。
字符串(如 “UKM”, “1”, “5a” )
注:'a’与"a "表示的含义是不同的,'a’表示一个字符常量,"a"表示一个字符串。
枚举型

一个常量可以直接调用(如124,‘A’),也可以给常量取个名字用一个标识符代表它,这就是符号常量。其语法格式为:(const的意义是定义不变的量)
const符号常量=常量字串;
习惯上,符号常量名用大写,变量名使用小写,便于区分。

//实例:求圆的面积
#include<cstdio>
const double PI=3.1415926;
int main(){
 double r,s;
 scanf("%lf",&r);
 s=PI*r*r;
 printf("%.3lf/n",s);
 return 0;
}
/*定义符号常量PI为3.1215926。
若使用#define进行定义则不必写数据类型,第二行含义同下
#define pi 3.1415926
*/

5.变量
变量代表了一个存储单元,其中的值是可以改空的,因此称为变量。
一个程序中可能要使用到若干 个变量,为了区别不同的变量,必须结每个变量(存储单元)取一个名(称为变量名),该变量(存贮单元)存储的值称为变量的值。变量中能存的类型为变量的类型。
5.1.变量名
1个变量名所代表变量,不可以同时有多个值。
用一个合法的标识符代表一个变量。 比如n,m,rot,total等都是合法变量名。在程序中变量要"先定义后使用”,变量名应遵循自定义标识符的命名规则。在C和C++语言,变量名大小写有区别
定义变量的语法格式为:
数据类型 变量表
例如:

int i=5,j,k(5);//定义i,j,k为整型变量,i,k赋初值为5,j初值未知
char a,b.c; //定义a,b,c为字符变量
float x,y,z;//定义x,y,z为浮点型变量

变量第一次使用时定义变量可以提高程序的可读性。读者不需要返回到代码的开始位置找某一特殊变量的定义,而且,在此处定义变量更容易给它赋以有意义的初始值。
用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为班符。C和C++语言规定,标识符只能由字母(包含下划线“_")开头后面的字符可以是字母或数字,对于标识符的长度,不同的C++语言编译器有不同的规定,考虑到系统的可移性,建议变量名的长度不要超过8个字符。例如:month、 age.s2 为合法的标识符。

5.2.变量的类型
常量是有类型的数据,变量在某一固定时刻用来存铺一个常量,因此也应有相应类型。如整型变量用来存储整数,实型变量用来存储实数。变量的类型,可为标准数据类型
int,short,long ,float,double和char等,也可以是用户自定义的各种类型。 变量一经定义,系统就在计算机内存中为其分配一个存储空间。程序使用变量时,就在相应的内存中存入或取出数据,这种操作称为变量的访问。
变量命名规则
1.变量名只能由字母、数字、下划线组成且必须由下划线或字母开头。
2.不能用保留字比如for,int,define等等。
3.尽量不要使用单个英文单词,因为很多函数的名称都是一个英文单词比如if,for等等。
4.尽量使用有正式含义的变量名,习惯上很少用拼音。
注意:定义在所有函数之外的变量称为全局变量,自动赋初值为0,可以通过程序改变,可在所有函数内使用;定义在某一函数内的为局部变量只能在当前函数使用,没有初值,必须手动
1)变量的值在程序执行过程中是可以改变的
2)变量的属性

Name      //变量名
Type       //变量类型
Value      //变量的值
Address  //变量的存储单元——地址

3)变量声明
变量的声明
类型关键字 变量名;
使用变量的基本原则:变量必须先声明,后使用;所有变量必须在第一条可执行语句前声明
声明的顺序无关紧要
一条声明语句可声明若干个同类型的变量
声明变量是初始化变量的最好时机:不被初始化的变量,其值为随机数
变量赋值
变量=表达式;
左值与右值类型一致

int x;
float c,d;
char ch[2233];
x=12;
c=12,d=2.33;

(二)数据类型
变量的类型决定了:数据的存储形式、合法的取值范围、占用内存空间的大小、可参与的运算种类

1、基本数据类型
int
整数,在目前绝大多数机器上占4个字节;TC 2.0,2个字节
float
单精度浮点数,4个字节
double
双精度浮点数,8个字节
char
字符,1个字节
表示256个ASCII字符,或0~255的整数
2、数据类型修饰符
1)short
short int,简写为short,短整数,2个字节
2)long
long int,简写为long,长整数,4个字节
long double,长双精度(高精度)浮点数,10个字节
3)unsigned
用来修饰char、int、short和long
无符号整数(正整数和0)
C语言不同数据类型取值范围
注意,short int,unsigned short int,unsigned char 最高位为符号位
3、如何计算变量或数据类型所占内存空间的大小
bit(b) 位(比特)
Byte(B) 字节 1B=8b
KB K 1KB=1024B
MB 兆 1MB=1024KB
GB G 1GB=1024MB
TB T 1TB=1024GB

一个位有多大?——只能是0或者1,二进制
一个字节有多大?——可以表示0~255之间的整数

4、不同类型占用的内存字节数不同
同种类型在不同的平台其占字节数不尽相同,如int在16位、32位和64位系统上分别占2、4和8个字节
用sizeof获得变量或者数据类型的长度
现象与危害:在平台间移植时会出现问题,导致数据丢失或者溢出

5、sizeof
C语言的关键字,并非函数。计算类型占用的字节数
两种语法形式

   sizeof(类型)
//结果为类型占用的字节数
   sizeof(表达式)
//结果为表达式值所属类型占用的字节数。常用

6、变量的赋值和赋值运算符

//1)简单赋值
//变量=表达式;
x=233;
//2)多重赋值
//变量1=变量2=表达式 ;
//变量1=(变量2=表达式) ;      右结合
int a,b;
float x,y;
a=0=0;
x=y=100.0;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

延7488

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值