类型 | 字节数 | 上下限 | 有效位数 | 举例 |
---|---|---|---|---|
整型 | 4 | -231~231-1 | 10 | int i; |
长整型 | 8 | -263~263-1 | 19 | long long i; |
单精度浮点型 | 4 | -3.4e-38~3.4e+38 | 8 | float i; |
双精度浮点型 | 8 | -1.7e-308~1.7e+308 | 16 | double i; |
基本数据类型
整型
(1) 十进制整数
(2) 八进制整数
(3) 二进制整数
(4) 十六进制整数
进制转换
X进制,每一位上的数,在运算时都是逢X进一位。
进位制/位置计数法是一种计数方式,又称进位记数法,位值计数法,用有限的数字符号代表所有的数值。
可使用[数字符号]的数称为基数或[底数],基数为n,即可称n进位制,简称n进制。
例如:
十进制:76(10)
二进制:1101(2)
八进制:0o61
十六进制:2BC
十进制转换二进制,数值除以2,所得的余数,从下往上,写出来。
浮点型
浮点数就是小数,包括:float(单精度浮点型)和double(双精度浮点型),大多数场合使用double表示浮点数,double类型的精度值是float类型的两倍。
浮点型数据直接赋值,通常写法:3.14、314、0.1、.5;
科学计数法:1.25e2、1.25e2、1.25e-2;
设置输出浮点数时,需要导入头文件,再设置保留的位数。
cout << fixed; 按照一般小数形式输出
cout << fixed << setprecision(2) << c << endl;
setprecision(2) 设置小数精度,括号中的数字表示保留的小数位数。
例如:
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
inta=40,b=39;
cout<<fixed<<setprecision(2) <<1.0*b/a<<endl;
cout<<fixed<<setprecision(2) <<100.0*b/a<<"%"<<endl;
return0;
}
运行结果:
0.97
97.50%
字符型
类型 | 字节数 | 范围 | 举例 |
---|---|---|---|
字符型 | 1 | -128~127 | char i; |
字符型常量,例如:‘a’ ,‘A’,‘5’,‘#’
字符型变量
声明:
char i; //指定变量i为char型
char n = ‘a’; //指定变量n为char型,并把n初始化为‘a’
1、字符常量只能用单引号括起来,不能用双引号或其他括号。例如:‘A’, ‘&’;
2、字符常量只能是单个字符,不能是字符串。错误写法:‘ABC’
3、字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如'5'和5 是不同的。'5'是字符常量,不能参与运算。
将一个字符存放到内存单元时,实际上并不是把该字符本身放到内存单元中去,是将该字符相应的ASCII码存放到单元中。
字符串
字符串数值简称字符串,是使用一对双引号括起来的字符序列。
(1) 字符由单引号括起来,字符串由双引号括起来。
(2) 字符只能是单个字符,字符串则可是零个或多个字符。
(3) 字符占一个字节的内存空间,字符串占内存字节数等于字符串的长度加1。系统自动在字符串末尾添加'\0'作为结束标记。
布尔型
true 和 false(真与假)
一般先计算关系运算符,然后将运算结果保存到bool变量c中。
bool类型变量只有两种结果,false和true,对应0和1
任何一个非零的数字,在bool类型中都是1(true)
只有数字0,在bool变量中是false(输出0)
类型转换
隐式类型转换
从小类型到大类型可自动完成转换
例如:
char a = ‘a’; short b = 3; int c = 100; long long d = 240; double e = 3.12345; cout << a + b << endl; //100 cout << c + d << endl; //340 cout << d + e << endl; //243.123 cout << e + a << endl; //100.123
强制类型转换
方法1:(数据类型) 变量或表达式
方法2:数据类型 (变量或表达式)
例如:
float a = 3.14;
(int) a;
int (a+b);
int (a)+b;
a = 3?
拓展
字符编码ascll码
每一个字符都对应了一个整数值
“a - z”对应的是97 - 122
“A - Z”对应的是65 - 90
字符‘0’-‘9’对应的是48 - 57
小写英文字母比大写的ascll码大32.
例如:
#include<iostream>
usingnamespacestd;
intmain()
{
charc1='a';
charc2='A';
cout<<c1<<endl;
cout<<c2<<endl;
return0;
}
运行结果:
a
A
setw()函数
用于设置字段的宽度。
例如:
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
cout<<setw(8) <<"abc"<<endl;
cout<<setw(5) <<"abcde"<<endl;
cout<<"abcds"<<setw(14) <<"abcdefg"<<endl;
return0;
}
运行结果:
abc
abcde
abcds abcdefg
当后面紧跟着的输出字段长度小于n的时候,在该字段前面用空格补全。
当输出字段长度大于n时,全部整体输出。
setfill()函数
用于设置其他字符填充
例如:
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
cout<<setfill('*') <<setw(8) <<"abc"<<endl;
cout<<setfill('&') <<setw(15) <<"abcde"<<endl;
cout<<"abcds"<<setfill('#') <<setw(14) <<"abcdefg"<<endl;
return0;
}
运行结果:
*abc
&&&&&&&&&&abcde
abcds#######abcdefg