【C++】(三)程序中数据的表示

程序中数据的表示

1 数据类型

利用计算机求解问题,首先要做的就是将数据引入到计算机中。
在程序语言中是通过数据类型来描述不同的数据形式的,数据类型不同,求解问题的方法也会不同。
在这里插入图片描述
在这里插入图片描述

红色是C语言不具有的数据类型

1.1 整形

  • C++语言整型分为长整型(long int)、基本整型(int)和短整型 (short int

  • long int可以简写为long、short int可以简写为short

  • short ≤ int ≤ long

  • 不同的数据类型规定了不同的机器数长度,决定了对应数据的数值范围,当一个整数超出此范围时计算机会将其转换为在数值范围内所允许的一个数,称为整型数据的溢出处理

  • 一般地,超过最大值的有符号整型数值会向上溢出变成负数,超过最小值的数据会向下溢出变成正数。
    在这里插入图片描述

1.2 浮点型

  • C++语言浮点型又称实型,分为单精度(float)、双精度(double) 和长双精度(long double)3种。
  • 在C++中规定float型在内存中占用4个字节,提供7位有效数字;
  • double型和long double型在内存中占用8个字节,提供16位有效数 字。

因为浮点型数据长度是有限的,所以浮点数存在计算误差。
虽然浮点数精度越高计算结果越精确,但其处理时间也长。
一个较大的浮点数与一个很小的浮点数做加法时,由于精度限制使 得很小的浮点数被忽略了,从而使得这样的加法无意义。

# include<iostream>        
# include<iomanip>          
using namespace std;      
int main()             
{
    
    
 float a = 0.00000678f;   //f:float类型
 double b = 0.00000678;
 a = a + 111111.111f;
 b = b + 111111.111;
 // 以浮点数形式输出并保留16位小数
 cout << setiosflags(ios::fixed) << setprecision(16);
 cout << "a=" << a << ",b=" << b << endl;
 return 0;
}

在这里插入图片描述

结果存在误差,这是有效位数限制导致的,以float为例子,float只有7位(111111.1),其他变为随机数。因此应该避免一个很大的数与一个很小的数相加。

1.3 字符型

C++语言字符型分为有符号(signed char)和无符号(unsigned char)两种,其中signed书写时可以省略。
字符型数据在内存中占用1个字节,采用二进制形式存储。

字符型数据可以存储单字节字符,如ASCII码,此时在内存中的数 据是字符的ASCII码值。例如字符'A'在内存中的存储形式为
在这里插入图片描述
在C++语言中字符型数据和整型数据之间可以通用。一个字符数据可以赋给整型变量,一个整型数据也可以赋给字符型变量,还可以对字符型数据进行算术运算
如:

# include<iostream>               
using namespace std;      
int main()             
{
    
    
 int i,j;
 char c1, c2;
 c1 = 'a';     // 字符数据赋值给字符型
 c2 = 98;      // 整数数据赋值给字符型
 i = 'A';      // 字符数据赋值给整形
 j = 66;       // 整数数据赋值给整型
 cout << "i=" << i << "j" << ",c1=" << c1 << ",c2=" << c2 << endl;
 cout << "c1-32=" << c1 - 32 << endl;      // 字符型可以进行减法运算
 return 0;
}

在这里插入图片描述

2 常量

常量(constant)是指程序中其值不能被修改的数据。分为字面常量和符号常量
从字面形式即可识别的常量称为字面常量(literal constant),例 如64(整形常量)、3.1415926(浮点型常量)和‘A’(字符型常量)等。
每个字面常量都具有数据类型,由它的书写形式和值来决定。

2.1 整型常量

(1)十进制整数
以非零十进制数1~9组成的整数,例如13579,-680等。
(2)八进制整数
0开头和八进制数0~7组成的整数,例如012,0177等。
(3)十六进制整数
0x0X开头和十六进制数0~9A~Fa~f组成的整数(字母大小写任意),例如0x1234,0xab,0xCF等。

2.2 浮点型常量

(1)小数形式。由小数点、十进制整数和小数组成的浮点数。整数和小数可以省略其中之一,但不能省略小数点
如: .123、123. 、0.0等。
(2)指数形式,又称科学记数法表示。以f E nf e n格式组成的浮点数,其 中Ee表示以10为底的幂,f可以是整数或小数,n为指数且必须是整型。 如: 0.31415926e+1、314.15926E-2等。

浮点型常量默认为double型。若在浮点数后面加一个字母f或F,则它是float型。

2.3 字符常量

以一对单引号(‘ ’)括起来的一个字符表示字符常量,
如:‘A’、‘0’、‘&’;
ab’ 错误
字符常量表示的是一个字符,存储的是该字符的ASCII码值。例如‘A’表示英文字符A,数据值是65;‘2’表示数字字符2,数据值是50。

注意字符‘2’和整数2数值是不一的。

2.4 用转义字符表示字符常量

以反斜线(\)开头,后跟一个或几个字符序列表示的字符称为转义字符,如\n 表示换行符。
采用转义字符可以表示ASCII字符集中不可打印或不方便输入的控制字符和其他 特定功能的字符

在这里插入图片描述
在这里插入图片描述
\ooo和\xhh称为通用转义字符(因为任何字符都可以用这种形式表示),其中ooo表示可以用1至3位八进制 数作为码值表示一个ASCII字符,hh表示可以用1至2位十六进制数作为码值表示ASCII字符。
在这里插入图片描述
123(ooo)为一个字符,4为一个字符;12为一个字符,8(因为8>7)为一个字符;1为一个字符,9(因为9>7)为一个字符

由于字符型数据在内存中只占用1个字节,即使按无符号处理其最大值也仅是255(八进制为377),因此ooo的数值范围为0~377(八 进制),其他值使得字符型数据溢出。同理,hh的数值范围为0~ FF

# include<iostream>               
using namespace std;      
int main()             
{
    
    
 //ab c制表符(8格) de 回到开头 f 制表符 g
 cout << "ab c\t de\rf\tg" << endl; 
 cout << "h\ti\b\bj k\n123\'\"\\\x41\102CDE" << endl;
 return 0;
}

在这里插入图片描述

2.5 字符串常量

以一对双引号(“ ”)括起来的零个或多个字符组成的字符序列称为字符串常量,ASCII字符集或多字节字符集(如汉字、日韩文字等)都可以组成字符串。
双引号是字符串常量的边界符,不是字符串的一部分,如果在字符串中要出现 双引号应使用转义字符(\“)
在这里插入图片描述

2.6 符号常量

用一个符号来代替一个常量。
符号常量定义形式为:

#define  标识符  常量

在这里插入图片描述

# include<iostream>               
using namespace std;    
#define PI 3.1415926   // 圆周率
int main()             
{
    
    
 double r = 5.0;
 cout << "L=" << 2 * PI * r << ",S="<<PI * r * r << endl;
 return 0;
}

优点:常量含义清晰;一改全改;

3 变量

在程序运行期间其值可以改变的量称为变量(variable)。
变量实际上就是计算机中的一个内存单元。
C++语言规定变量应该有一个名字,用变量名代表内存单元。
C++语言通过定义变量时指定其数据类型来确定内存单元的大小, 不同的数据类型有不同的数据形式和存储形式,需要一定数量(单 位为字节)的内存单元。

3.1 变量的使用

C++语言变量必须“先定义,后使用”,定义变量的一般形式是:
在这里插入图片描述
变量定义后,变量值是未确定的(除了静态存储情形),即变量值是随机的。直接使用此时的变量参与运算,运算结果也是随机的。

在变量定义的同时给变量一个初值,称为变量初始化(initialized), 一般形式为:

变量类型  变量名=初值; 
变量类型  变量名1=初值1, 变量名2=初值2, ... ;

在这里插入图片描述

定义变量后,可以通过赋值语句为变量赋予新的数据,一般形式为:

变量名=表达式;

赋值后,无论变量原来的值是多少,都将被新值替代。
在这里插入图片描述

3.2 变量的const限定

在变量定义前加上const修饰,这样的变量称为只读变量(read-only variable)或常变量(constant variable)

它在程序运行期间的值不能被修改。其定义的一般形式为 :

const 变量类型  变量名列表;

在这里插入图片描述
在这里插入图片描述

const限定过的变量在编译过程中若发现有修改的操作时会报编译错 误,从而“阻止”对变量的修改。
使用const限定强制实现对象最低访问权限,是现代软件开发的设计原则之一。

# include<iostream>        // 标准输入输出函数库
# include<cmath>           // 数学函数库
using namespace std;       // 使用标准命名空间
double root(const double x, const double y)  // 这样在就不怕函数中误操作使得常量a,b值改变
{
    
    
    if (x >= y) return sqrt(x - y);
    else return 0;
}
int main()
{
    
    
    double a, b;    // 定义两个浮点型变量
    cin >> a >> b;  // 输入两个数
    cout << root(a, b) << endl;    //计算a-b平方根
    return 0;
}

C++程序设计-西北工业大学-魏英、姜学锋、刘君瑞

猜你喜欢

转载自blog.csdn.net/weixin_44378835/article/details/109079282