第3节 程序中数据的表示
1.数据类型
1、数据类型
►利用计算机求解问题,首先要做的就是将数据引入到计算机中。
►在程序语言中是通过数据类型来描述不同的数据形式的,数据类型不同,求解问题的方法也会不同。
►1.整形
►C++语言整型分为长整型(long int)、基本整型(int)和短整型(short int)
►long int可以简写为long、short int可以简写为short。
►short ≤ int ≤ long
►不同的数据类型规定了不同的机器数长度,决定了对应数据的数值范围,当一个整数超出此范围时计算机
会将其转换为在数值范围内所允许的一个数,称为整型数据的溢出处理。
►一般地,超过最大值的有符号整型数值会向上溢出变成负数,超过最小值的数据会向下溢出变成正数。
►2.浮点型
►C++语言浮点型又称实型,分为单精度(float)、双精度(double)和长双精度(long double)3种。
►在C++中规定float型在内存中占用4个字节,提供7位有效数字;
►double型和long double型在内存中占用8个字节,提供16位有效数字。
►因为浮点型数据长度是有限的,所以浮点数存在计算误差。
►虽然浮点数精度越高计算结果越精确,但其处理时间也长。
►一个较大的浮点数与一个很小的浮点数做加法时,由于精度限制使得很小的浮点数被忽略了,从而使得这
样的加法无意义。
【例3.1】
1 #include <iostream>
2 #include <iomanip>
3 using namespace std;
4 int main()
5 {
6 float a=0.00000678f;
7 double b=0.00000678;
8 a = a + 111111.111f;
9 b = b + 111111.111;
10 cout<<setiosflags(ios::fixed)<<setprecision(16);
11 cout<<"a="<<a<<",b="<<b<<endl;
12 return 0;
13 }
/*
运行结果:
a=111111.1093750000000000,b=111111.1110067800036632
*/
►2.字符型
►C++语言字符型分为有符号(signed char)和无符号(unsigned char)两种,其中signed书写时
可以省略。
►字符型数据在内存中占用1个字节,采用二进制形式存储。
►字符型数据可以存储单字节字符,如ASCII码,此时在内存中的数据是字符的ASCII码值。例如字符'A'
在内存中的存储形式为:0 1 0 0 0 0 0 1 'A'的ASCII码值
►在C++语言中字符型数据和整型数据之间可以通用。一个字符数据可以赋给整型变量,一个整型数据也
可以赋给字符型变量,还可以对字符型数据进行算术运算。
【例3.2】
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int i, j;
6 char c1,c2;
7 c1='a'; //字符数据赋值给字符型
8 c2=98; //整数数据赋值给字符型
9 i='A'; //字符数据赋值给整型
10 j=66; //整数数据赋值给整型
11 cout<<"i="<<i<<",j="<<j<<",c1="<<c1<<",c2="<<c2<<endl;
12 cout<<"c1-32="<<c1-32<<endl; //字符型可以进行减法运算
13 return 0;
14 }
/*
运行结果:
i=65 , j=66 , c1=a , c2=b
c1-32=33
*/
2.常量、变量
2、常量
►常量(constant)是指程序中其值不能被修改的数据。分为字面常量和符号常量。
►从字面形式即可识别的常量称为字面常量(literal constant),例如64、3.1415926和‘A’等。
►每个字面常量都具有数据类型,由它的书写形式和值来决定。
►1. 整型常量
► (1)十进制整数。
以非零十进制数1~9组成的整数,例如13579,-680等。
► (2)八进制整数。
以0开头和八进制数0~7组成的整数,例如012,0177等。
► (3)十六进制整数。
以0x或0X开头和十六进制数0~9、A~F或a~f组成的整数(字母大小写任意),例
如0x1234,0xab,0xCF等。
►2. 浮点型常量
► (1)小数形式。由小数点、十进制整数和小数组成的浮点数。整数和小数可以省略其中之一,但不
能省略小数点。
如: .123、123. 、0.0等。
► (2)指数形式,又称科学记数法表示。以f E n或 f e n格式组成的浮点数,其中E或e表示以10为
底的幂,f可以是整数或小数,n为指数且必须是整型。
如: 0.31415926e+1、314.15926E-2等。
浮点型常量默认为double型。若在浮点数后面加一个字母f或F,则它是float型。
►3. 字符常量
► 以一对单引号(‘ ’)括起来的一个字符表示字符常量,
► 如:‘A’、‘0’、‘&’、’ab’ 错误!
► 字符常量表示的是一个字符,存储的是该字符的ASCII码值。例如‘A’表示英文字符A,数据值是65;
‘2’表示数字字符2,数据值是50。
► 注意区别字符‘2’和整数2的写法。
►4. 用转义字符表示字符常量
► 以反斜线(\)开头,后跟一个或几个字符序列表示的字符称为转义字符,如\n表示换行符。
► 采用转义字符可以表示ASCII字符集中不可打印或不方便输入的控制字符和其他特定功能的字符。
###### 3、变量
►\ooo和\xhh称为通用转义字符,其中ooo表示可以用1至3位八进制数作为码值表示一个ASCII字符,hh表示可
以用1至2位十六进制数作为码值表示ASCII字符。
►如:“\1234” “\123和4”,"\128" “\12和8”,"\19" “\1和9”, ► \9 错误! ,\0xFE 错误!
►由于字符型数据在内存中只占用1个字节,即使按无符号处理其最大值也仅是255(八进制为377),因此ooo的
数值范围为0~377(八进制),其他值使得字符型数据溢出。同理,hh的数值范围为0~FF。
【例3.3】转义字符应用举例
1 #include <iostream>
2 using namespace std;
3 int main()
4 { cout<<"ab c\t de\rf\tg"<<endl;
5 cout<<"h\ti\b\bj k\n123\'\"\\\x41\102CDE"<<endl;
6 return 0;
7 }
/*
运行结果:
f└┘└┘└┘└┘└┘└┘└┘ g d e
h└┘└┘└┘└┘└┘└┘ j └┘ k
123'"\ABCDE
*/
►5. 字符串常量
► 以一对双引号(“ ”)括起来的零个或多个字符组成的字符序列称为字符串常量,ASCII字符集或
多字节字符集(如汉字、日韩文字等)都可以组成字符串。
► 双引号是字符串常量的边界符,不是字符串的一部分,如果在字符串中要出现双引号应使用转义
字符(\“)。
"" //空字符串(0个字符)
" " //包含一个空格的字符串
"Hello,World\n" //包含Hello,World 和 换行符的字符串
"xyz\101\x42" //包含x y z AB的字符串
"\\\'\"\n" //包含反斜线(\\) 单引号(\')和双引号(\")的字符串
►6. 符号常量
► 符号常量定义形式为:
#define 标识符 常量
► 其中#define是宏定义命令,作用是将标识符定义为常量值,在程序中所有出现该标识符的地方均用
常量替换。
► 例:#define PRICE 30
【例3.4】符号常量应用举例
1 #include <iostream>
2 using namespace std;
3 #define PI 3.1415926 //3.1415926即为圆周率π
4 int main()
5 {
6 double r=5.0;
7 cout<<"L="<<2*PI*r<<",S="<<PI*r*r<<endl; //PI为3.1415926
8 return 0;
9 }
►在程序运行期间其值可以改变的量称为变量(variable)。
►变量实际上就是计算机中的一个内存单元。
►C++语言规定变量应该有一个名字,用变量名代表内存单元。
►C++语言通过定义变量时指定其数据类型来确定内存单元的大小,不同的数据类型有不同的数据形式和
存储形式,需要一定数量(单位为字节)的内存单元。
►1. 变量的使用
►C++语言变量必须“先定义,后使用”,定义变量的一般形式是:
变量类型 变量名列表;
double a , b , c , d; //定义实型变量
int i , j , k; //一次定义多个int型变量
int a, char c; //错误
►变量定义后,变量值是未确定的(除了静态存储情形),即变量值是随机的。直接使用此时的变量参与
运算,运算结果也是随机的。
►在变量定义的同时给变量一个初值,称为变量初始化(initialized),一般形式为:
变量类型 变量名=初值;
变量类型 变量名1=初值1, 变量名2=初值2, ... ;
double pi=3.1415926; //正确,初始化pi为3.1415926
int x , y , k=10; //正确,可以只对部分变量初始化
int a=1 , b=1 , c=1; //正确,可以同时初始化多个变量
int d=a , e=a+b; //错误,初值不能是变量或表达式
int m=n=z=5; //错误,不能对变量连续初始化
►定义变量后,可以通过赋值语句为变量赋予新的数据,一般形式为:
变量名=表达式;
►赋值后,无论变量原来的值是多少,都将被新值替代。
int k; k=5; //给k赋值5
...... //k保持不变
k=10; //重新给k赋值10,k已改变不再是5
►2. 变量的const限定
►在变量定义前加上const修饰,这样的变量称为只读变量(read-only variable)或常
变量(constant variable)
►它在程序运行期间的值不能被修改。其定义的一般形式为
const 变量类型 变量名列表;
int x;
const int i=6 , j=10; x=i+1; //正确,可以使用const变量
i=10; //错误,不可以给const变量赋值
const int i=6; //正确
const int m; //错误
►const限定过的变量在编译过程中若发现有修改的操作时会报编译错误,从而“阻止”对变量的修改。
►使用const限定强制实现对象最低访问权限,是现代软件开发的设计原则之一。
【例3.5】
1 #include <iostream> //标准输入输出函数库
2 #include <cmath> //数学函数库
3 using namespace std;
4 double root(const double x, const double y) //root函数求x-y的平方根
5 { if (x>=y) return sqrt(x-y); //只有在x大于等于y时计算x-y的平方根
6 else return 0; //否则返回0
7 }
8 int main() //主函数
9 { double a, b; //定义两个浮点型变量
10 cin>>a>>b; //输入两个数
11 cout<<root(a,b)<<endl; //输出a-b的平方根
12 return 0; //主函数正常结束返回0
13 }
标签:表示,字符,常量,int,double,程序,整数,整型,数据
From: https://blog.csdn.net/m0_69088645/article/details/140132273