2.1数据类型
数据类型 | 占用字节数 | 取值范围 |
---|---|---|
bool |
1 | true 或 false |
char |
1 | -128 到 127 或 0 到 255 (取决于是否带符号) |
unsigned char |
1 | 0 到 255 |
short |
2 | -32,768 到 32,767 |
unsigned short |
2 | 0 到 65,535 |
int |
4 | -2,147,483,648 到 2,147,483,647 |
unsigned int |
4 | 0 到 4,294,967,295 |
long |
4 | -2,147,483,648 到 2,147,483,647 |
unsigned long |
4 | 0 到 4,294,967,295 |
long long |
8 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long long |
8 | 0 到 18,446,744,073,709,551,615 |
float |
4 | 大约 1.17549e-38 到 3.40282e+38 |
double |
8 | 大约 2.22507e-308 到 1.79769e+308 |
long double |
8 或更多 | 大约 2.22507e-308 到 1.79769e+308 |
请注意,占用字节数和取值范围是一般情况下的默认值,实际上可能会因平台和编译器的差异而有所变化。
字符串string:由于string在c++中属于类类型,不是基本数据类型,类不能计算其在内 存中所占大小,非要用sizeof(string)来算的话,一般算出来的结果是 sizeof(string)=4byte,如果string字符串内容很多,很明显就不是其 真实大小,string类里面有计算其字节大小的函数如:size(),length()。
注:如何区分和使用这两个浮点类型呢,首先float和double的精度不同, float保留到小数点后面7位,而double保留到小数点后面16位,float能保证6 位有效数字,而double能保证15位有效数字,如果在不追求精度的的情况下当然用 float比较好,节省内存,如果需要很高的精度的情况下,最好还是用 double,平时我们定义浮点型变量一般都用double,毕竟精度高,一般精度 的损失是不能忽略的。
2.2常量和变量
常量
定义符号常量的方法:
#define PI 3.14159
const double r=2.5
注:符号常量必须先定义后引用,并且符号常量在程序中只能引用,不能改变其值。
变量
程序执行过程中,值可以改变的量就叫做变量,由用户指定数据类型并命名。
标识符:用来标识变量名、函数名、数组名、用户自定义类型名等名称的字符称为标识符。
标识符是由字母、数字、下划线 "_" 组成,第一个字符不能是数字字符;同时区分大小写。
C++语法中用到的单词或字符称为关键字(Keyword)或保留字不可以作为标识符。
变量的定义与赋值
定义格式
类型说明符 变量名1 变量名2 ......;
int i, j, k;
float x, y , z;
double weight;
变量赋初值
首次使用变量时,变量必须有一个确定值。
int i=1, j=2, k=3;
float x=12.3;
char c='A';
float x(12.3);
float x;
x = 12.3;
2.3整型数据
整型常量
长整型常数:以L或l结尾;无符号整型常数:以U或u结尾。
整型变量
在C++中,可以使用不同的方式定义整型变量,具体取决于变量的需求和表示范围。以下是常见的整型变量定义方式及其表示范围:
int
:使用关键字int
定义整型变量。通常表示范围为-2,147,483,648至2,147,483,647,取决于编译器和平台。
unsigned int
:使用无符号关键字unsigned
修饰int
定义无符号整型变量。通常表示范围为0至4,294,967,295。
short
:使用关键字short
定义短整型变量。通常表示范围为-32,768至32,767。
unsigned short
:使用无符号关键字unsigned
修饰short
定义无符号短整型变量。通常表示范围为0至65,535。
long
:使用关键字long
定义长整型变量。通常表示范围为-2,147,483,648至2,147,483,647,取决于编译器和平台。
unsigned long
:使用无符号关键字unsigned
修饰long
定义无符号长整型变量。通常表示范围为0至4,294,967,295。
long long
:使用关键字long long
定义长长整型变量。通常表示范围为-9,223,372,036,854,775,808至9,223,372,036,854,775,807,取决于编译器和平台。
unsigned long long
:使用无符号关键字unsigned
修饰long long
定义无符号长长整型变量。通常表示范围为0至18,446,744,073,709,551,615。
2.4浮点型数据
浮点型常量
实数常量后面加上f或F表示float型数,加上l或L表示long double型数
浮点型变量
在C++中,可以使用不同的方式定义浮点型变量,具体取决于变量的需求和表示范围。以下是常见的浮点型变量定义方式及其表示范围:
float
:使用关键字float
定义单精度浮点型变量。通常表示范围为1.2e-38到3.4e38,但精确范围和精度会因编译器和平台而有所不同。
double
:使用关键字double
定义双精度浮点型变量。通常表示范围为2.3e-308到1.7e308,同样精确范围和精度会因编译器和平台而有所不同。
long double
:使用关键字long double
定义扩展精度浮点型变量。它比double
的表示范围更大,通常为3.4e-4932到1.1e4932,但一样会因编译器和平台而有所不同。
请注意,浮点数的表示范围和精度是有限的,取决于计算机的硬件和C++实现。特别是在进行浮点数计算时,可能存在舍入误差和精度损失的问题。为了避免这些问题,建议在比较浮点数时使用适当的容差或浮点数比较函数。
另外,C++还提供了一些数学库(如
)来进行数值计算和处理浮点数。通过使用这些库中的函数,您可以执行各种数学操作,如四舍五入、取整、开方、对数等,以及处理浮点数的特殊需求。
2.5字符型数据
字符型常量:ASCII码(32个控制码96个符号)用7为2进制表示一个字母或字符信息。在计算机中存储单位为字节,所以最高位补0,组成8位2进制数。
C++转义字符及其含义:
\\
:反斜杠\'
:单引号\"
:双引号\?
:问号\a
:响铃(警报)\b
:退格\f
:换页\n
:换行\r
:回车\t
:水平制表符\v
:垂直制表符\0
:空字符\nnn
:八进制表示的字符(n代表一个八进制数字)字符型变量
定义好字符型变量再对其进行赋值
char str;
str='A';
str='\101'; //八进制转义字符
str='\x41' ; //十六进制转义字符
str=65; //十进制整数
str=0101; //八进制整数
str=0x41; //十六进制整数
大写字母转换为小写字母:
#include
using namespce std;
int main() {
char c1, c2;
c1='B';
c2=c1+32;
cout<
字符串常量
字符串结束标志'\0'是编译系统自动加到字符串后面。双引号括起来的序列,后面就会有一个字节的字符'\0'。例如字符串"a"和字符'a'
2.6类型转换
不同数据类型间的混合算数运算
char——>int和float——>double是运算中一定要进行的转换。
C++规定有符号类型和无符号类型运算结果为无符号类型。
赋值时的类型转换
赋值运算符(=)左右两边的变量类型不一致但类型兼容时,系统自动进行类型转换,规则如下:
强制类型转换
(类型名)(表达式)
(double)a; //a转换成double类型
(int)(3.5+x); //表达式的值转换成int类型
2.7运算符与表达式
C++算数运算符
运算符 | 说明 | 优先级 |
---|---|---|
*,/,% | 乘法、除法、取模 | 高 |
+, - | 加法、减法 | 低 |
C++关系运算符
运算符 | 说明 | 优先级 |
---|---|---|
== | 等于 | 相同(低) |
!= | 不等于 | |
> | 大于 | 相同(高) |
< | 小于 | |
>= | 大于等于 | |
<= | 小于等于 |
C++逻辑运算符
逻辑运算符的优先级关系为逻辑非(最高优先级) > 逻辑与 > 逻辑或(最低优先级)。
复合赋值运算符
格式:
变量 双目运算符=表达式
等同于:
变量 =变量 双目运算符 表达式
自增运算符与自减运算符
1.自增运算符(++)使变量的值增1,两种使用方法:
2.自减运算符(--)使变量的值减1,两种使用方法:
sizeof运算符及表达式:
格式:sizeof(类型) 或 sizeof(变量)
用于计算某一操作数类型或变量的字节数
sizeof(int);
double x;
sizeof (x);
2.8简单的输入输出语句
使用C++的输入/输出流时,必须在程序开头用编译预处理指令
#include
十进制整数、实数、与字符数据的输入
cin>>变量名1>>变量名2>>......>>变量名n;
输入项多余一个时,应用空格和回车将输入项分隔。
输入项结束:
cin语句过滤空格和回车;若要输入空格和回车,使用cin.get函数,格式如下:
cin.get(字符型变量); 或 字符型变量=cin.get();
十六进制或八进制数据的输入
hex | 十六进制 |
oct | 八进制 |
dec | 十进制 |
int a,b,c;
cin>>hex>>a;
cin>>oct>>b;
cin>>dec>>c;
注意:
数据输出
使用cout语句:
cout<<表达式1<<表达式2<<......<<表达式n;
其中若用了双引号(" "),双引号内的内容原样输出,C++中输出数值的有效数位默认6位。
控制符 | 功能 |
dec | 十进制显示(默认) |
hex | 十六进制显示 |
oct | 八进制显示 |
setprecision(n) | 浮点数时显示有效的n位数 |
setw(n) | 输出项宽度位n列(默认右对齐) |
setiosflags(ios::fixed) | 设置浮点数以固定小数位数显示 |
setiosflags(ios::scientific) | 设置浮点数以指数形式显示 |
setiosflags(ios::left) | 输出数据左对齐 |
setiosflags(ios::right) | 输出数据右对齐 |
使用上述控制符必须包含头文件iomanip
#include
注意: