一、程序中数据的表示
(1)C++中常见的数据类型(********)
注:红色为C++特有的类型。
(2)基本类型数据的内存长度和数值范围
(3)整形
C++中整型分为长整型(long int)、基本整型(int)和短整型(short int)。
注:一般来说数据占用存储空间short<=int<=long。
补充:整形数据的溢出处理
不同的数据类型规定了不同的机器数长度,决定了对应数据的数值范围,当一个整数超出此范围时计算机会将其转换为在数值范围内所允许的一个数,称为整形数据的溢出处理。
注:一般来说,超过最大值的有符号整型数值会向上溢出变成负数,超过最小值的数据会向下溢出变成正数。(物极必反)
例:short类型溢出
(4)浮点型
C++中浮点型又称实型,分为单精度(float)、双精度(double)和长双精度(long double)三种。
注:在C++中规定float型数据在内存中占用4个字节,提供7位有效数字(有效数字范围内的位是定义精确的,超出的位会赋予一个随机值);double和long double型数据占用8个字节,提供16位有效数字。
补充:一个较大的浮点数与一个很小的浮点数做加法时,由于精度限制使得很小的浮点数被忽略,从而导致这样的加法无意义。
例:
#include
#include
using namespace std;
int main()
{
float a=0.00000678f;
double b=0.00000678;
a=a+111111.111f;
b=b+111111.111;
cout<
可以看到float型数据a有效位时是7位,前7位精确,第8位开始为随机数;而double或long double型有效位是16位,前16位精确,第18位开始为随机数。
注:C++中float类型初始化数据时,如果数据后面没有加f,系统会默认数据为double类型,当这个数据赋值给float类型时,系统会先把数据从double类型转换成float类型再把数据赋值给float类型定义的变量中。如果在数据的后面加上一个f时,系统默认为float类型,此时就不需要系统转换类型,可以直接赋值给float类型定义的变量中。
(5)字符型
C++中字符型分为有符号(signed char)和无符号(unsigned char)两种,其中signed可省略。
注: 1.字符型数据在内存中占用1个字节,采用二进制形式存储。
2.字符型数据可以存储单字节字符,如ASCII码,此时在内存中的数据是字符的ASCII码值。例如‘A’在内存中的存储形式为:
注:字符型在存储时对应相应ASCII码值(整数)存储。
3.在C++中字符型数据和整形数据之间可以通用(一个字符型数据可以赋给整型变量,一个整形数据可以赋给字符型变量,还可以对字符型数据进行算术运算)。
例:
#include
using namespace std;
int main()
{
int i,j;
char c1,c2;
c1='a';
c2=98;
i='A';
j=66;
cout<<"i="<
二、常量与变量
(1)常量(constant)
常量指程序中其值不能被修改的数据。分为字面常量(例 64、3.1415926、‘A’等)和符号常量。
①整型常量
以非零开头十进制数1~9组成的整数(123)。
2.八进制整数
以0开头和八进制数1~7组成的整数(012)。
3.十六进制整数
以0x或0X开头和十六进制0~9、A~F组成的整数(0x124)。
②浮点型常量
1.小数形式
由小数点、十进制整数和小数组成的浮点数。整数和小数可以省略其一
(如:12.3 、 12. 、 .123)。
2.指数形式(科学记数法表示)
以f E n或f e n格式组成的浮点数,其中e/E可以表示以10为底的幂,f可以是整数或小数,n为指数且必须是整形(0.3145e+2、1.25E-3)。
注:浮点型常量默认为double型。若在浮点数后加一个f或F,则表示为float型。
3.字符常量
以一对单引号(‘’)括起来的一个字符表示字符常量。
注:①字符常量表示一个字符,存储的是对应字符的ASCII码值。
②注意区别字符‘2’和整数2的写法
4.用转义字符表示字符常量
以反斜杠 (\) 开头,后面跟一个或几个字符序列表示的字符称为转义字符。(如:\n为换行符)
补充:常见的转义字符:
注:①\ooo和\xhh称为通用转义字符。其中ooo表示可以用1~3位八进制数作为码值表示一个ASCII字符,hh表示可以用1~2位十六进制数作为码值表示一个ASCII字符
如:”\1234”=”\123和4”(两个字符);”\128”=”\12和8”(两个字符);”\19”=”\1和9”;
错误: \9 (八进制无9,也无别的八进制数);\0xFE(不是0x开头)
②由于字符型数据在内存中只占用1个字节,即使按无符号处理其最大值也仅是255(八进制位377),因此ooo的数值范围为0~377(八进制),其他值使得字符型数据溢出。同理hh的数值范围为0~FF。
例:
#include
using namespace std;
int main()
{
cout<<"ab c\t de\rf\tg"<
结果为:
5.字符串常量
以一对双引号(“”)括起来的零个或多个字符组成的字符序列称为字符串常量。
注:如果字符串中要出现双引号要用到(\”)。
6.符号常量的定义
//表达式
#define 标识符 常量
例:求圆的周长和面积(pi=3.14.5926)
#include
using namespace std;
#define PI 3.1415926
int main()
{
double r=5.0;
cout<<"L="<<2*PI*r<
结果为:
(2)变量(variable)
本质上变量是计算机中的一个内存单元。而C++规定变量应该有一个名字,用变量名代表内存单元,且由定义变量时指定的数据类型来确定内存单元。
1.变量的定义和使用(先定义,后使用)
//变量的定义
变量类型 变量名;
//例:
char a;
int i,j,k;
2.变量的初始化
//变量的初始化
变量类型 变量名 = 初值;
//或
变量类型 变量名1=初值1,变量名2=初值2,······ ;
//例:
double pi =3.1415;
int a=3,b=5,c=7;
//注意
int b=a; //错误,初始值不能是表达式
int b=a=x=5;//错误,不能对变量连续初始化
3.变量的赋值
//变量的赋值
变量名=表达式;
//例:
int k;
k=5; //赋值后k=5
//注意:赋值后,无论变量原来的值是多少,都将被新值所代替。
k=10;
//此时10将5覆盖,k的值为10
4.变量的const限定
在变量前加上const修饰,这样的变量称为只读变量或常变量。其在程序运行期间值不可更改。
//const修饰变量
const 变量类型 变量名;
//例:
const int i=6,j=7;
i=7; //错误常变量不可更改
const int m; //错误m未初始化
//注意:定义常变量时必须对其初始化!!!
例:
#include //标准输入输出函数库
#include //数学函数库
using namespace std;
double root(const double x,const double y)//root函数求x-y的平方根
{
if(x>=y) //只有x大于等于y时计算x-y的平方根
return sqrt(x-y);
else //否则返回0
return 0;
}
int main(void)
{
double a,b; //定义两个双精度浮点型变量
cin>>a>>b; //输入a和b
cout<