数据类型与枚举型

/* 数据类型长度(字节)数值范围
int 4(32 bits) -2147483648 ~ 2147483647 (-2^31~(2^31-1))
short int2 (16 bits)            -32768 ~ 32767 (-2^15~(2^15-1))
long  int 4 (32 bits)    -2147483648 ~ 2147483647
unsigned int 4 (32 bits)      0 ~ 4294967295 (0~(2^32-1))
unsigned short int2 (16 bits)     0 ~ 65535(0~(2^16-1))
unsigned long int 4 (32 bits)      0 ~ 4294967295 (0~(2^32-1))
char     1 (8 bits)        -128 ~ 127(-2^7~(2^7-1))
flcat     4 (32 bits)       1.2e-38 ~ 3.4e38
double 8 (64 bits)       2.2e-308 ~ 1.8e308
*/ 
补码:
由于计算机不能执行减法,所以采用补码将二进制反转,然后相加,则得出减法的操作,这就是补码的作用。

溢出:
上面的表有写出每种数据类型的最大值与最小值,我们不要超出了范围,数据溢出后不会报错,而是像汽车里程表那样,到达最大值后,又从最小值开始计数。因此我们需要时刻注意所定义变量的最大取值范围,一定不要超过这个范围进行赋值。

C++有六种数据类型:布尔型(bool)、字符型(char)、双字符型(wchar_t)、整型(int)、单精度浮点型(float)、双精度浮点型(double)。

在进行细分的话:
整型又可分为无符号型、长整型、短整型。

双精度型包括   双精度型  和  长双精度型。

除此之外还有静态变量(static)、外部变量(extern)、寄存器变量和自动存储变量。 
 
假如从广义上来划分C++的数据类型的话,我们可以将其仅仅分为两大类——常量(值不可改变)与变量(值可改变)。

我们从常量与变量的角度来介绍以上六种数据类型。

布尔型      bool:
布尔型可以表示两个逻辑值,1和0,即真或者假。
#include<iostream>
using namespace std;
int main()
{
bool check;
check = true;//由于在C++中true(真)用来代表1,false(假)用来代表0,所以也可以这么赋值
if (check == 1)//假如if()括号中 为真 则执行下面括号中的功能
{
cout << "欢迎来到玫瑰坊!" << endl;
}
return 0;
}


字符型      char : 
字符型变量存放的是字符,这个字符指的是计算机字符集中的字符(ASCII码)。字符型变量只占一个字节,我们知道一个字符为8位(二进制的8位),而最大的8位二进制数为:11111111 (8),换算成十进制为255,因此字符型变量可存储256个字节,而一个字符可解释为0~255之间的一个数或某个ASCII码。
字符中的  “\”   反斜杠改变了其后字母的含义,因此他又叫转义字符。 
所有的特殊字符 :
\a铃声(警报声)
\b回退
\f换页
\n换行
\r回车
\tTab键
\v垂直制表
\'单引号
\"双引号
\?问号
\\反斜杠
\000八进制
\xhh十六进制


#include<iostream>
using namespace std;
int main()
{
char ch;//定义了一个字符型变量,它的名字为ch,系统为该变量分配一个字节的空间,并将空间的地址赋给变量名ch。
ch = 'A';//将大写字母A存储到变量名ch所代表的地址中。注:字符中单引号'  '
cout << ch << endl;
cout << (int)ch<<endl;//如果想看ASCII码,强制转换为 int 型()中代表强制转换的类型。
for (int i = 32; i<128; i++)
{
cout << (char)i;//这时可以看到所有字符
}
cout << "\n\n欢迎来到";
char zh = '\t';//作用与按下Tab键相同,特殊字符的用途。
cout << zh << "玫瑰坊!";
return 0;
}


双字节类型     wchar_t:
我们知道char型变量可存储一个字节的字符,它用来保存英文字符与标点符号是可以的,但是存储汉字、韩文、日文却不可以,因为汉字、韩文都占据了两个字节,为了解决这个问题,C++又提供了 wchar_t 类型,也就是双字节类型,又叫宽字符类型。

#include<iostream>
#include<locale>//setlocale函数实在头文件<locale>中定义,所以添加头文件
using namespace std;
int main()
{//"chs"代表中文的意思,LC_ALL代表设置所有选项
setlocale(LC_ALL, "chs");//由于“中”是汉字,所以调用一个函数来将本机的语言设置为中文简体
wchar_t wt[]=L"中";//【 】表示这是数组型变量,L 告诉编译器为“中”分配两个字节的空间。
wcout << wt << endl;//使用wcout替代cout来输出快字符。
return 0;
}


整型         int :
整型变量有很多种,最基本的是  int  

#include<iostream>
#include<locale>//setlocale函数实在头文件<locale>中定义,所以添加头文件
using namespace std;
int main()
{
//short int a;  //定义变量 a 是为了告诉编译器为 a 分配4个字节的空间,short关键字短整型
//short a;  //一般情况下可以简写,短整型只占用 2个字节 
//long  b;  //long int b;此处简写。长整型占用 4个字节
//int 与 long 都是占用4个字节,区别为:long类型的数所占的内存空间为4个字节,在16位系统里是 2个字节 ,在32位系统中是 4个字节。int类型的长度并不是固定的,它和系统平台有关系。
cout << "int:"<<sizeof(int)<<endl;//可以用关键字sizeof来测试一下字节问题
cout << "long:" << sizeof(long) << endl;
cout << "short:" << sizeof(short) << endl;//有符号短整型可以表示正整数与负整数
//按照符号来区分一下整型变量,可分为无符号与有符号型。区别:

unsigned short a;//关键字unsigned  无符号  短整型
unsigned long  b;//无符号长整型
cout << "unsigned long" << sizeof(unsigned long) << endl;
cout << "unsigned short:" << sizeof(unsigned short) << endl;
return 0;
//有符号可以表示负整数,而无符号只能表示正整数,同时由于有符号整型的最高位要用于表示符号位,因此取值范围要比无符号小一倍。
}

浮点型     float  :

#include<iostream>
#include<iomanip>//设置精度的头文件
using namespace std;
int main()
{
float a = 12.3456789012345;//只输出了6位数,第6位是经过四舍五入的结果
cout << "a:" <<setprecision(15)<< a << endl;//设置精度
//setprecision()函数括号中代表设定小数的长度,即使不够,也要拼够,但精确数字保持在6~7位
double b = 12.123456789012;//双精度,占中8个字节,比float多占了一倍,精度也大了一倍,即:15~16位精准
cout << "b:" << setprecision(15) << b << endl;
//double精度虽然高,但是占内存多,运行速度慢,所以能用float就不要用double
return 0;
}

常量:
顾名思义,其值是不能改变的,可以对常量初始化,但是此后你就不能再对其进行赋值。

int main()
{
const double PI = 3.1415926;//此时 PI 的值就不能再变了//const 关键字——常量
return 0;
}

枚举型:
#include<iostream>
using namespace std;
int main()
{
//关键字 enum 将其后的num声明为枚举型,然后我们为num定义了5个值:01234
enum num {zero,one,two,three,four};
//枚举型的第一个常量值默认为0,其他依次增加。
//enum num {zero=100,one,two,three=200,four};
//这时zero为100,则one自动为101,two为102...three=200,则four=201...
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值