二、基本数据类型和表达式

本文介绍了C++中的基本数据类型,包括整型、浮点型、字符型的取值范围和使用,以及常量的定义。此外,还讨论了变量的定义与赋值,以及不同类型之间的转换规则。运算符和表达式的使用,如算术、关系和逻辑运算符,以及输入输出语句如cin和cout的运用也进行了阐述。
摘要由CSDN通过智能技术生成

2.1数据类型

数据类型占用字节数取值范围
bool1true 或 false
char1-128 到 127 或 0 到 255 (取决于是否带符号)
unsigned char10 到 255
short2-32,768 到 32,767
unsigned short20 到 65,535
int4-2,147,483,648 到 2,147,483,647
unsigned int40 到 4,294,967,295
long4-2,147,483,648 到 2,147,483,647
unsigned long40 到 4,294,967,295
long long8-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long long80 到 18,446,744,073,709,551,615
float4大约 1.17549e-38 到 3.40282e+38
double8大约 2.22507e-308 到 1.79769e+308
long double8 或更多大约 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常量和变量

常量

  • 直接常量:直接表示的常量;如30,30.0
  • 符号常量:用符号表示的常量

 定义符号常量的方法:

  • 使用编译预处理指令
  • 使用C++的常量说明符const
    #define PI 3.14159
    const double r=2.5

 注:符号常量必须先定义后引用,并且符号常量在程序中只能引用,不能改变其值。

变量

程序执行过程中,值可以改变的量就叫做变量,由用户指定数据类型并命名。

标识符:用来标识变量名、函数名、数组名、用户自定义类型名等名称的字符称为标识符。

标识符是由字母、数字、下划线 "_" 组成,第一个字符不能是数字字符;同时区分大小写。

C++语法中用到的单词或字符称为关键字(Keyword)或保留字不可以作为标识符。

变量的定义与赋值

定义格式

类型说明符 变量名1 变量名2 ......;
int i, j, k;
float x, y , z;
double weight;

变量赋初值

首次使用变量时,变量必须有一个确定值。

  1. 变量说明时直接赋初值
    int i=1, j=2, k=3;
    float x=12.3;
    char c='A';
    float x(12.3);
  2. 使用赋值语句赋初值
float x;
x = 12.3;

2.3整型数据

整型常量

  1. 十进制整数。123、-10
  2. 八进制整数。0~7组成,以0开头,012、052
  3. 十六进制整数。0x开头,0x123、0xAB

 长整型常数:以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浮点型数据

浮点型常量

  • 十进制小数形式(必须有小数点):0.12、.12、12.
  • 指数形式(科学表示法):基数10用字母E或e表示。

 实数常量后面加上f或F表示float型数,加上l或L表示long double型数

浮点型变量

在C++中,可以使用不同的方式定义浮点型变量,具体取决于变量的需求和表示范围。以下是常见的浮点型变量定义方式及其表示范围:

  1. float:使用关键字float定义单精度浮点型变量。通常表示范围为1.2e-38到3.4e38,但精确范围和精度会因编译器和平台而有所不同。

  2. double:使用关键字double定义双精度浮点型变量。通常表示范围为2.3e-308到1.7e308,同样精确范围和精度会因编译器和平台而有所不同。

  3. long double:使用关键字long double定义扩展精度浮点型变量。它比double的表示范围更大,通常为3.4e-4932到1.1e4932,但一样会因编译器和平台而有所不同。

请注意,浮点数的表示范围和精度是有限的,取决于计算机的硬件和C++实现。特别是在进行浮点数计算时,可能存在舍入误差和精度损失的问题。为了避免这些问题,建议在比较浮点数时使用适当的容差或浮点数比较函数。

另外,C++还提供了一些数学库(如<cmath>)来进行数值计算和处理浮点数。通过使用这些库中的函数,您可以执行各种数学操作,如四舍五入、取整、开方、对数等,以及处理浮点数的特殊需求。

2.5字符型数据

 字符型常量:ASCII码(32个控制码96个符号)用7为2进制表示一个字母或字符信息。在计算机中存储单位为字节,所以最高位补0,组成8位2进制数。

C++转义字符及其含义:

  1. \\:反斜杠
  2. \':单引号
  3. \":双引号
  4. \?:问号
  5. \a:响铃(警报)
  6. \b:退格
  7. \f:换页
  8. \n:换行
  9. \r:回车
  10. \t:水平制表符
  11. \v:垂直制表符
  12. \0:空字符
  13. \nnn:八进制表示的字符(n代表一个八进制数字)

 字符型变量

定义好字符型变量再对其进行赋值

char str;
str='A';
str='\101';   //八进制转义字符
str='\x41' ;  //十六进制转义字符
str=65;       //十进制整数
str=0101;     //八进制整数
str=0x41;     //十六进制整数

大写字母转换为小写字母:

#include <iostream>
using namespce std;
int main() {
 char c1, c2;
 c1='B';
 c2=c1+32;
 cout<<c1<<'\t'<<c2<<'\n';
 return 0;
 }

字符串常量

字符串结束标志'\0'是编译系统自动加到字符串后面。双引号括起来的序列,后面就会有一个字节的字符'\0'。例如字符串"a"和字符'a'

2.6类型转换

不同数据类型间的混合算数运算

 char——>int和float——>double是运算中一定要进行的转换。

C++规定有符号类型和无符号类型运算结果为无符号类型。

赋值时的类型转换

赋值运算符(=)左右两边的变量类型不一致但类型兼容时,系统自动进行类型转换,规则如下:

  1. 实型数(float、double)赋整型(int)变量时,去掉小数部分仅取整数部分赋给整型变量。若超过取值范围则赋值结果错误。
  2. 整型数(int)赋给实型数(float、double)时,将整型数变换为实型数,再赋给实型数。
  3. 少字节整型数据(short)赋给多字节整型变量(int、long),少字节整型数据放到多字节整型数据的低位字节,高位字节拓展为数据的符号位。称为“符号拓展”。
  4. 多位字节数据赋值给少位字节数据,多位字节低位一一赋值高位字节舍去。
  5. 字符型数据(char)赋给整型变量(int)时有两种情况:(1)无符号字符类型数据(unsigned char),将其放到整型变量(int)的低字节;(2)有符号字节类型数据(char),将其放到整型变量的(int)的低字节,高字节拓展为符号位。
  6. 无符号整型(unsigned int)或长整型(unsigned long)赋值给整型变量(int)时,若不超出int的取值范围,不会产生任何问题。

强制类型转换

(类型名)(表达式)

(double)a;     //a转换成double类型
(int)(3.5+x);  //表达式的值转换成int类型

2.7运算符与表达式

C++算数运算符

运算符说明优先级
*,/,%乘法、除法、取模
+, -加法、减法

 C++关系运算符

运算符说明优先级
==等于相同(低)
!=不等于
>大于相同(高)
<小于
>=大于等于
<=小于等于

 C++逻辑运算符

  1. 逻辑与(&&):当所有操作数都为true时,逻辑与运算结果为true;只要有一个操作数为false,逻辑与运算结果为false。
  2. 逻辑或(||):只要有一个操作数为true,逻辑或运算结果为true;所有操作数都为false时,逻辑或运算结果为false。
  3. 逻辑非(!):对单个操作数进行取反运算,如果操作数为true,则逻辑非运算结果为false;如果操作数为false,则逻辑非运算结果为true。

 逻辑运算符的优先级关系为逻辑非(最高优先级) > 逻辑与 > 逻辑或(最低优先级)。

 复合赋值运算符

格式:

变量 双目运算符=表达式

等同于:

变量 =变量 双目运算符 表达式

自增运算符与自减运算符

1.自增运算符(++)使变量的值增1,两种使用方法:

  • 前置。++i; 先执行i=i+1,再使用i的值
  • 后置。i++;先使用i的值,再执行i=i+1

 2.自减运算符(--)使变量的值减1,两种使用方法:

  • 前置。--i; 先执行i=i-1,再使用i的值
  • 后置。i--;先使用i的值,再执行i=i-1

sizeof运算符及表达式:

格式:sizeof(类型)  或 sizeof(变量)

用于计算某一操作数类型或变量的字节数 

sizeof(int);
double x;
sizeof (x);

2.8简单的输入输出语句

使用C++的输入/输出流时,必须在程序开头用编译预处理指令

#include <iostream>

十进制整数、实数、与字符数据的输入

cin>>变量名1>>变量名2>>......>>变量名n;

输入项多余一个时,应用空格和回车将输入项分隔。

输入项结束:

  • 最后一个输入项后输入空格、回车、制表键(Tab);
  • 遇到非法输入。

 cin语句过滤空格和回车;若要输入空格和回车,使用cin.get函数,格式如下:

cin.get(字符型变量);  或  字符型变量=cin.get();

十六进制或八进制数据的输入

hex十六进制
oct八进制
dec十进制
int a,b,c;
cin>>hex>>a;
cin>>oct>>b;
cin>>dec>>c;

注意:

  • 八进制或十六进制的输入,只适用于整型变量,不适用于字符型、实型变量。
  • cin中指明数制后,其指明数制一直有效持续到新的cin指明另一个数制。
  • 输入的格式、个数、类型必须与cin语句中的一一对应,否则对当前输入错误,后续输入也错误

数据输出

使用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 <iomanip>

注意:

  • 指明一种数值输出时,对其后的输出均有效。
  • 实数的输出也是一旦指明输出形式,对其后的输出也有效。
  • 控制符setw(n)仅对其后一个输出项有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SweetCinderella

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值