基本内置类型
1.void类型
void doA()
{
}
空类型,这个类型的函数没有返回值。
2.int型
int doB()
{
int a=4;
return a;
}
整型,返回值为整数,创建的变量也为整数。
3.float型
float doC()
{
float c=0.1;
return c;
}
浮点型,返回值为浮点数,创建的变量也为浮点数。
4.char型
char doD()
{
char d='a';
return d;
}
字符型,返回值为一个字符,创建的变量也为字符。
5.bool型
char doE()
{
bool FF=false;
return FF;
}
布尔型,返回真或假,是一个判断类型。
字符类型的空间
以上5种就是基础的数据类型,出此之外还有几种扩展类型:
类型 | 含义 | 机器字 | 最小存储空间 | |
bool | 布尔型 | - | ||
char | 字符型 | 8位 | 标准字符型 | |
wchar_t | 宽字符型 | 16位 | 用来存储中文等字符 | |
short | 短整型 | 半个机器字 | 16位 | |
int | 整型 | 1个机器字 | 16位 | 标准字符型 |
long | 长整型 | 1或2个机器字 | 32位 | |
float | 单精度浮点型 | 6位有效数字 | ||
double | 双精度浮点型 | 10位有效数字 | 标准浮点型,最快的浮点型 | |
long double | 10位有效数字 |
函数sizeof(),计算数据空间的字节数。
#include<iostream>
int main()
{
std::cout << "bool:\t\t" << sizeof(bool) << std::endl;
std::cout << "char:\t\t" << sizeof(char) << std::endl;
std::cout << "wchar_t:\t" << sizeof(wchar_t) << std::endl;
std::cout << "short:\t\t" << sizeof(short) << std::endl;
std::cout << "int:\t\t" << sizeof(int) << std::endl;
std::cout << "long:\t\t" << sizeof(long) << std::endl;
std::cout << "float:\t\t" << sizeof(float) << std::endl;
std::cout << "double:\t\t" << sizeof(double) << std::endl;
std::cout << "long double:\t" << sizeof(long double) << std::endl;
system("pause");
return 0;
}
结果:
bool: 1
char: 1
wchar_t: 2
short: 2
int: 4
long: 4
float: 4
double: 8
long double: 8
char: 1
wchar_t: 2
short: 2
int: 4
long: 4
float: 4
double: 8
long double: 8
溢出
unsigned 表示无符号数,也就是都为整数。如unsigned int表示正整数
signed表示有符号数,可省略。如 (signed) int整数
类型 | 空间 | 2进制最大数 | 10最大数 | 2最小数 | 10最小数 |
unsigned char | 8位 | 2^8-1 | 255 | 0 | 0 |
char | 8位 | 2^7-1 | 127 | -2^7 | -128 |
unsigned short | 16位 | 2^16-1 | 65535 | 0 | 0 |
short | 16位 | 2^15-1 | 32767 | -2^15 | -32768 |
unsigned int | 32位 | 2^32-1 | 4294967295 | 0 | 0 |
int | 32位 | 2^31-1 | 2147483647 | -2^31 | -2147483648 |
当我们向一个变量赋值时,若数字溢出,则会从变量的最小值从头开始赋值。
#include<iostream>
using namespace std;
int main()
{
unsigned char a = 255;
unsigned char b = 256;
printf("%d %d\n", a,b);
system("pause");
return 0;
}
结果为和255 0。
例题:
习题2.3
如果在某机器上short类型占16位,那么可以赋给short类型的最大数是什么?Unsigned short类型的最大数又是什么?
#include<iostream>
using namespace std;
int main()
{
unsigned short a1 = 65535, a2 = a1 + 1;
short b1 = 32767,b2=b1+1;
cout << a1 << " " << a2<<endl;
cout << b1 << " " << b2<<endl;
system("pause");
return 0;
}
结果:
65535 0
32767 -32768
32767 -32768
习题2.4
当给16位的unsigned short对象赋值100000时,赋的值是什么?
#include<iostream>
using namespace std;
int main()
{
unsigned short a = 100000;
cout << a<<endl;
system("pause");
return 0;
}
结果:34464,即为100000%65535(unsigned short的最大数)。