数据类型的存在是为了确保在程序中正确地存储和处理数据。下面是一些数据类型的重要作用:
内存管理: 数据类型确定了变量在内存中所占用的空间大小。 这样,编译器可以为每个变量分配适当的内存空间。使用正确的数据类型,可以避免内存浪费和溢出的问题。
运算操作: 不同的数据类型支持不同的操作。例如,可以对整数类型进行加减乘除运算,而字符类型只支持字符比较、连接等操作。 数据类型确定了程序可以对变量进行的操作集。
代码可读性和维护性: 数据类型提供了对变量类型的描述,使得代码更易读和易于维护。通过阅读代码,开发人员可以了解变量的含义和用途,提高代码的可理解性和可维护性。
总结:数据类型的存在是为了确保数据在程序中正确、有效、高效地存储和操作。
计算机中所有数据都是以 二进制进行存储 的,
在C++中定义变量前一定要声明数据类型, 每种数据类型都有自己的占的字节。
数据类型 | 占用空间 | 取值范围 |
---|---|---|
short(短整型) | 2字节 | -2^15 ~ 2^15-1 |
int(整型) | 4字节 | -2^31 ~ 2^31-1 |
long(长整型) | 8字节(64位),4字节(32位) | -2^31 ~ 2^31-1 |
long long(长长整型) | 8字节 | -2^63 ~ 2^63-1 |
如何整数类型的使用。
#include
using namespace std;
int main(){
//1.整数类型使用 short int long long long
short num_1 = 4;
//定义int类型
int num_2 =4;
//定义长整型
long num_3 =4;
//定义长长整型
long long num_4 =4;
cout << num_1 <<endl;
cout << num_2 <<endl;
cout << num_3 <<endl;
cout << num_4 <<endl;
return 0;
}
short
超出范围会怎样?#include
using namespace std;
int main(){
//整数类型 范围 -2**15 ~2**15-1
// -32768 ~32767
short a = 32768 ;
short a1 = -32769 ;
//结果输出了什么? 发生了什么变化?
cout<< a << endl; //-32768
cout<< a1 << endl; //32767
return 0;
}
//sizeof()就是统计数据类型占的内存大小
#include
using namespace std;
int main(){
short a1 = 10;
int a2 = 10;
long a3 = 10;
long long a4 = 10;
cout << sizeof(a1) << endl; //2
cout << sizeof(a2) << endl; //4
cout << sizeof(a3) << endl; //4
cout << sizeof(a4) << endl; //8
return 0;
}
float
单精度。double
双精度。数据类型 | 占用空间 | 有效数字范围 |
---|---|---|
float | 4字节 | 有效 7位 |
double | 8字节 | 有效位数15~16 |
如何使用
f
#include
using namespace std;
int main(){
//实数类型 float double
float f = 3.1415926f;
double d = 3.1415926 ;
cout<< f << endl; //默认显示6位 3.14159
cout<< d << endl; //3.14159
return 0;
}
查看保留小数位数的方法。
#include
#include
#include //包含setprecision()文件
using namespace std;
int main(){
// cout<
//1.查看浮点型占用大小,关键字sizeof
float f =3.141592653f;
double d = 3.141592653;
//查看大小
cout <<sizeof(f)<<endl; //4
cout <<sizeof(d)<<endl; //8
//设置输出浮点数的精度.
cout <<setprecision(8) << f << endl;
cout <<setprecision(8) << d << endl;
return 0;
}
#include
using namespace std;
int main(){
//科学计数法2种表示方式
//1. 3e3 1.2e4
double d = 3e3 ;// 3*10**3
double d2 = 1.2e4; //1.2 *10**4
cout << d << endl;
cout << d2 << endl;
//2. 3e-3 1.2e-4
double d3 =3e-3; //3*0.1**3
double d4 =1.2e-4; // 1.2*0.1**4
cout <<d3<<endl; //0.003
cout <<d4<<endl; //0.00012
return 0;
}
字符型变量用于 显示单个字符,语法格式如下:
' '
围起来的单个字符。char c = 'a';
只能是单引号#include
using namespace std;
int main(){
//字符的定义方式
char a ='a';
cout<<a<<endl;
cout<<sizeof(a)<<endl; // 1个字节
//2. 错误示范
// char a ="a"; //必须使用单引号
// char a ='ab'; //只能是单个字符
// char a ='你'; //存不了一个汉字
return 0;
}
取值范围
数据类型 | 占用空间 | 最多表示的符号数 | 取值范围 |
---|---|---|---|
char | 1字节 | 256个不同值 (ASCII) | -128 ~127 的整数值 |
ASCII是一种字符编码标准,它定义了将字符映射到整数值的规则。
ASCII(美国标准信息交换码)是一种用于计算机文本编码的字符集。它利用7位二进制数字(0到127)来 表示128个不同的字符。
在C++中,我们可以使用char类型来表示ASCII字符。 char类型是一个字节大小的整数类型,可以存储ASCII码值。
#include
using namespace std;
int main(){
char a ='a';
char a1 = 97;
//为什输出都是 a ? ASCII 字符码表对应
cout << a << endl;
cout << a1 << endl;
int i = a+a1; //可以进行数字运算. 需要转换int类型.
cout << i ; // 194
//查看所有的字符串 匹配ascii表
for (int i=32 ; i< 127;i++){
cout << "i对应的字符 "<<i <<" "<<char(i) << endl;
}
return 0;
}
转义字符是一种在编程语言中使用的特殊字符序列,用来表示一些特殊的字符或者字符组合。它们被用于告诉编译器或解释器将它们后面的字符当作普通字符处理,而不是它们通常具有的特殊含义。
//还有很多, 但是掌握这些就可以。
\n:换行符,将当前位置移到下一行的开头。
\t:制表符,用于在文本中插入水平制表符。
\\:反斜杠字符,用于插入一个反斜杠字符。
\':单引号字符,用于插入一个单引号字符。
\":双引号字符,用于插入一个双引号字符。
\b:退格符,用于删除前一个字符。
\n
来表示换行符,或者使用\t
来表示制表符。#include
using namespace std;
int main(){
/*1. \n 换行
\t 制表符
\' 插入单引号
\" 插入双引号
\b 退格符
*/
cout << "H\be\"llo \n C++, Hel\tlo Wor\'ld!"<<endl;
cout << "Hello,World"<< endl;
return 0;
}
char str[] = " 变量值 "
;string s = "变量值"
;" "
#include
。#include //头文件扩展
using namespace std; //命名空间 ,如果不写就需要调用
#include //导入头文件string
int main(){
//需要执行方法体
cout<<"Hello C++"<<endl; //endl相当于回车
cout<< "Hello World";
//遇见程序结束返回值.
string s ="hello";
cout << s <<endl;
return 0;
}
布尔类型就是,专门表示真假的类型。
数据类型 | 占用空间 | 取值 |
---|---|---|
bool | 1字节 | true(1) 和 false(0) |
布尔类型有两个值,除了0代表假,其他都为真。
true
真。false
假。#include
using namespace std;
int main(){
//1.创建小数
bool b = true;
bool b1 = false;
// true 本质 是 1 false 本质为 0
cout << b <<endl; // 1
cout << b1 <<endl; // 0
//2.查看占用空间 1个字节
cout << sizeof(b)<<endl;
cout << sizeof(b1)<<endl;
cout << "-------------------"<< endl;
//3. 扩展 除了0代表假,其他都是真
bool num_1 = 0;
bool num_2 = 1.5;
bool num_3 = 3.8;
bool num_4 = -3.8;
cout << num_1 <<endl; // 0
cout << num_2 <<endl; //1
cout << num_3 <<endl; //1
cout << num_4 <<endl; //1
return 0;
}
隐式转换是指,在一些情况下,编译器会自动将一种类型的值转换为另一种类型的值,而无需显式地指定转换操作。
#include
using namespace std;
int main(){
/*
1.隐式类型转换
//char --> int -->long-->float-->double
*/
//1.1 char --> int
char c ='a';
int i = 67 ;
//表达式有int时 就会char类型就会自动提升为 int类型
int res = c + i; //a就自动转换为 97 + i 就是 67
cout << res << endl; //164
//1.2 int -->double
int i_1 = 2;
double d = 9.0;
double res_1 = d / i_1;
cout << res_1 << endl; //4.5
//1.3 int 和 int
int i_2 = 5 ;
cout << i_2/i_1<< endl; //2 因为都是int 不保留小数
return 0 ;
}
隐式类型是小转大方向,但是如果要 从大类型转换到小类型 呢?
强制类型换行有两种书写方式
#include
using namespace std;
int main(){
/*1.显示类型转换, 从大类型转换为小类型
就是强制转换.
*/
//float --> int
float f = 3.14;
cout <<"float-->int: " <<int(f+1) <<endl; //3
//int --> char
int a = 65; //0~127 从33开始..
cout << "int --> char "<<char(a) << endl; //A
}
需求在,控制台输入两个值,分别是 a,b ,输出的时候要求 输出b,a。
代码如下;
#include
using namespace std;
/*
1. 需求,在控制台输入2个数 a ,b
输出需要编程 b , a
交换变量.
*/
int main(){
//1.控制台输入
cout << "请输入 a: " << endl;
cout << "请输入 b: " << endl;
//1.1 定义a 的值
int a ; //先声明 a
int b ; //先声明 b
cin >> a ; //不需要添加>>endl(输出流换行);
cin >> b ;
//交换变量
int c ;
c = a;
a = b ;
b = c;
cout << "a的值是: "<< a << endl; //使用
cout << "b的值是: "<< b << endl; //使用
return 0;
}
输入一个正方形边长为 r , 计算阴影部分的面积 (如图所示),π的取值为 3.1415,要求结果 保留3位有效数 ,当正方形 边长为 5.5 时, 求阴影面积。
#include
using namespace std;
#include //导入精度输出头文件
/*
1. 阴影部分的面积;
正方形面积 - 4分之一圆的面积.
*/
int main(){
//1.正方形面积 r^2 ,圆的面积 π*r^2
const double pai = 3.1415 ; //π
double r = 5.5; //既是圆的半径,又是长方形的边长
double s; //阴影部分面积
s = r*r - pai*r*r/4;
//保留2位小数 注意需要导入头文件
cout << "阴影部分面积s: " << setprecision(3)<< s << endl;
return 0 ;
}
要求是输入一个字符请你输出这个字符对应的ASCII的编码是多少?
#include
using namespace std;
int main(){
cout<< "请输入字符: "<< endl;
char c ;
cin >> c;
//转出时对应的应该是10进制 int类型
cout << int(c) <<endl;
return 0;
}
自己思考,假如需求调转过来。
#include
using namespace std;
int main(){
//1.输入数字类型 int
cout << "请输入一个数字: "<< endl;
int a ;
cin >> a;
//2. 转换为char类型
cout << char(a)<< endl;
return 0;
}