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

news2025/1/9 14:56:00

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)仅对其后一个输出项有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/783809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ES6基础知识二:ES6中数组新增了哪些扩展?

一、扩展运算符的应用 ES6通过扩展元素符…&#xff0c;好比 rest 参数的逆运算&#xff0c;将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3]) // 1 2 3console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5[...document.querySelectorAll(div)] // [<div>, &l…

12 扩展Spring MVC

12.1 实现页面跳转功能 页面跳转功能&#xff1a;访问localhost:8081/jiang会自动跳转到另一个页面。 首先&#xff0c;在config包下创建一个名为MyMvcConfig的配置类&#xff1a; 类上加入Configuration注解&#xff0c;类实现WebMvcConfiger接口&#xff0c;实现里面的视图跳…

Python入门【列表元素访问和计数 、切片操作、列表的遍历、复制列表所有的元素到新列表对象、多维列表、元组tuple】(五)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…

OSI 和 TCP/IP 网络分层模型详解(基础)

OSI模型: 即开放式通信系统互联参考模型&#xff08;Open System Interconnection Reference Model&#xff09;&#xff0c;是国际标准化组织&#xff08;ISO&#xff09;提出的一个试图使各种计算机在世界范围内互连为网络的标准框架&#xff0c;简称OSI。 OSI 七层模型 OS…

两个数组的dp问题(1)--动态规划

一)最长公共子序列: 1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; 一)定义一个状态表示:根据经验题目要求 1)选取第一个字符串[0&#xff0c;i]区间以及第二个字符串[0&#xff0c;j]区间作为研究对象&#xff0c;先选取两段区间研究问题&#xff0c;先求出[0…

即时零售业务调研2022

调研时间22年7月 核心观点&#xff1a; 即时零售业务正处于爆发期疫情催化&#xff0c;线下商家和零售平台处于双向奔赴的蜜月期未来规模会是万亿市场&#xff0c;市场不容小觑&#xff0c;广告业务重要 业务对比优势 平台模式护城河是&#xff1a;线上流量线下配送网络&am…

芯洲科技-降压DCDC开关电源参考选型目录

芯洲科技&#xff0c;是国内领先的中高压DC-DC&#xff08;直流转直流&#xff09;功率转换芯片供应商。北京冠宇铭通 一级代理。 国产化替代&#xff0c;对标TI&#xff0c;有很多料号可直接PIN TO PIN&#xff0c;比如TPS562200(SOT23-6)\TPS563200(SOT23-6)/TPS54540/LMR140…

02、什么是TPS和响应时间

在这个图中&#xff0c;定义了三条曲线、三个区域、两个点以及三个状态描述。 三条曲线&#xff1a;吞吐量的曲线&#xff08;紫色&#xff09;、使用率 / 用户数曲线&#xff08;绿色&#xff09;、响应时间曲线&#xff08;深蓝色&#xff09;。三个区域&#xff1a;轻负载区…

【IDEA】idea 无法打包文件到 target 如何处理.

文章目录 1. 一般原因就是文件的资源没有设置2. 还有可能是打包的配置中没有包含xxx.xml,xxx.sql等3. 还有一种情况是&#xff0c;因为缓存 1. 一般原因就是文件的资源没有设置 比如常见的 maven 项目&#xff0c;必须标记资源的类别&#xff0c;否则就有可能无法编译到target…

unity——Rigidbody(刚体)

官方手册&#xff1a;Rigidbody 官方API&#xff1a;Rigidbody Api 组件简介 刚体 (Rigidbody)使__游戏对象__的行为方式受物理控制。刚体可以接受力和扭矩&#xff0c;使对象以逼真的方式移动。任何游戏对象都必须包含受重力影响的刚体&#xff0c;行为方式基于施加的作用力…

基于机器视觉工具箱和形态学处理的视频中目标形状检测算法matlab仿真

目录 1.算法理论概述 2.部分核心程序 3.算法运行软件版本 4.算法运行效果图预览 5.算法完整程序工程 1.算法理论概述 目标形状检测是计算机视觉领域的重要任务之一&#xff0c;旨在从视频序列中自动检测和识别特定目标的形状。本文介绍一种基于机器视觉工具箱和形态学处理…

Unity自定义后处理——Bloom效果

大家好&#xff0c;我是阿赵。   继续介绍屏幕后处理效果&#xff0c;这一期讲一下Bloom效果。 一、Bloom效果介绍 还是拿这个模型作为背景。 Bloom效果&#xff0c;就是一种全屏泛光的效果&#xff0c;让模型和特效有一种真的在发光的感觉。 根据参数不一样&#xff0c;可…

21 对于对象中set方法的理解

对于一个Student对象&#xff0c;属性有name和age&#xff0c;而age一般是比0大的&#xff0c;赋值不可能是负数&#xff0c;可以通过set方法来控制&#xff01;Student对象如下&#xff1a; public class Student {// 成员变量private int age;public Student() {}public int…

嬴图 | K邻算法在风险传导场景中的实践意义

随着图思维方式与图数据框架在工业领域的有效开展和深入应用&#xff0c;可靠且高效的图算法也就成为了图数据探索、挖掘与应用的基石。该图算法系列&#xff08;具体见推荐阅读&#xff09;&#xff0c;集合了 Ultipa 嬴图团队在算法实践应用中的经验与思考&#xff0c;希望在…

海外NFT玩法入门科普 - Web3.0(二)

咪哥杂谈 本篇阅读时间约为 7 分钟。 1 前言 距离上一篇文章有些时日&#xff0c;把上一次介绍 web3 的海外 nft 的坑继续填完&#xff0c;今天这篇是下篇&#xff0c;其中详细的介绍了我从去年一年来&#xff0c;所见&#xff0c;所参与的玩法&#xff0c;赚钱方式&#xff0c…

VUE开发神器-NVM nodejs版本控制工具nvm

前言 在学习前端框架或者是nodejs时&#xff0c;有时候某些框架对nodejs的版本有要求。但此时你的电脑上已经安装了10.x版本的nodejs&#xff0c;你不想直接更新到12.x&#xff0c;想同时保存10.x和12.x版本&#xff0c;在必要的时候还能随时切换nodejs版本。那么nvm工具你值得…

[oeasy]python0073_进制转化_eval_evaluate_衡量_oct_octal_八进制

进制转化 回忆上次内容 上次了解的是 整型数字类变量integer前缀为i 整型变量 和 字符串变量 不同 整型变量 是 直接存储二进制形式的可以用 int()函数 将 2进制形式的 字符串 转化为 十进制整数 int()函数 接受两个变量 待转化的字符串字符串使用的进制 二进制 和 十进制…

No spring.config.import property has been defined

报错如下&#xff0c;异常信息里面已经提示了修改的方式&#xff1a; 19:16:46.221 [main] ERROR org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter - *************************** APPLICATION FAILED TO START ***************************Description…

数据库应用:MySQL高级语句(三)存储过程

目录 一、理论 1.存储过程 2.存储过程操作 3.存储过程的参数 4.存储过程的控制语句 二、实验 1.创建和调用存储过程 ​编辑 ​编辑 2.存储过程的参数 3.存储过程的控制语句 三、总结 一、理论 1.存储过程 &#xff08;1&#xff09;概念 存储过程是一组为了完成…

「旅游小攻略」广东河源

Hello 小伙伴们好呀&#xff0c;我是爱折腾的 jsliang~ 今天主要安利的&#xff0c;是「广东省/河源市/源城区」附近的逛吃逛吃。 特别适合 2 天 1 夜、3 天 2 夜的&#xff0c;自驾游或者随心走的小伙伴&#xff0c;随着本篇攻略嗨起来吧~ 更多了解欢迎加 WX&#xff1a;Liang…