C++系统教程004-数据类型(03)

news2024/10/11 22:40:14

一 .变量

变量是指在程序运行期间其值可以发生改变的量。每个变量都必须有一个名称作为唯一的标识,且具有一个特定的数据类型。变量使用之前,一定要先进行声明或定义。

1.变量的声明和定义

C++中,变量声明是指为变量提供一个名称,并告诉编译器这个变量将被使用,但不会为其分配内存空间。变量声明的一般形式如下:

  1. ​“数据类型”指变量的类型,如整型、浮点型、字符型等。
  2. ​“变量名”则是用户给变量起的名称,必须符合标识符的命名规则。
  3. 多个同一类型的变量可以在一行中声明,变量名之间用逗号隔开。

定义变量时,需要为其分配一块内存空间,以存储其值。语法形式如下:

例如,下面定义了多个变量:        

定义多个赋相同初值的变量时,应写成“int a=3, b=3, c=3;”形式,不能写成“int a=b=c=3;”形式。

2.整型变量

用来存储整型数值的变量。

根据占有的内存空间大小,整型变量可分为:

  1. 基本整型(int)
  2. 短整型(short)
  3. 长整型(long)3类。

根据是否有符号

  1. 可分为有符号整型(signed)
  2. 无符号整型(unsigned)两类。

因此,整型变量共分为6类。其中,方括号中的关键字可以省略。

不同的整型,其在内存中占用的字节空间不相同,因此可表述的变量数值范围也不同。以32位操作系统为例,短整型、整型、长整型变量占用的字节数和可表示的数值范围。

练习:

下面定义了一个整型变量a,为它分配了4个字节的内存空间,并设初始值为10。

int a=10;

变量赋值时,整型常量后可以加上L或l、U或u等后缀,清晰指明其类型,如1314L、520U等。

根据CPU寄存器位数和编译器的不同,最大的整型数值也会不同。32位操作系统中,基本整型(简称为整型)为4字节,长整型为4字节;64位操作系统中,基本整型为4字节,长整型为8字节。

C++程序中,布尔型(bool)被当作整型对待,false表示0,true表示1。

因此,将布尔型赋值给整型是合理的,将整型赋值给布尔型也是合法的。

例如:

#include<iostream>
int main()
{
	bool ret;//定义布尔变量ret
	int var=3;//定义整型变量var,并为其赋初始值为3
ret=var;//将整型变量var赋值给bool变量 ret,相当于ret=reture
var=ret;//将布尔型变量ret赋给整型变量var,相当于var=1 
	std::cout<<var<<std::endl;
}

3 .浮点型变量

浮点型变量分为单精度(float)、双精度(double)和长双精度(long double)3类,其占用的字节数和可表示的数值范围。

  1. float和double相比,double类型的变量具有更高的精度,即它可以表示更多的小数位数。
  2. float保留到小数点后7位,有效数字为6~7位;
  3. double保留到小数点后16位,有效数字为15~16位。

实际开发中,一般多使用double类型,尽可能地避免精度损失。

例如,下面代码声明了多个浮点型变量。

float a;
doubule b;
long double c;

在程序中使用浮点型数据时,需要注意以下两点:

1.浮点型数据相加

浮点型数据的有效数字是有限制的,如float的有效数字是6位或7位,如果将数字86041238.78赋值给float类型,显示的数字可能是86041240.00,个位数8被四舍五入,小数位被忽略。如果将86041238.78与5相加,输出的结果为86041245.00,而不是86041243.78。

2.浮点型数据与0进行比较

在开发程序的过程中,经常会进行两个浮点型数据的比较,此时尽量不要使用==”或“!=”运算符,而应使用“>=”或“<=”之类的运算符。

例如,下述代码直接将浮点型变量与0进行比较,不是高质量的代码。可能会产生未知的结果。

float a=0.000001;
if(a==0)

惯例的做法是:定义0的精度,然后判断浮点数是否在该精度范围内。

#include"stdio.h"
int main()
{
	float eps=0.000001;//定义0的精度 
	float fvar=0.001;
	if(fvar>=-eps&&fvar<=eps)//如果浮点数在精度范围内 
		cout<<"等于0!";
	else//如果浮点数超出精度范围 
		cout<<"不等于0!" ; 
}

数字里可以有下画线,这些下画线不会影响数字的值,仅提供分隔作用,方便阅读。

下画线不能写在数字开头或末尾,二进制和十六进制前缀字母旁,以及小数点旁。

3.变量赋值

变量的值是动态改变的,每次改变都需要进行赋值。变量赋值的形式如下:

变量名=表达式;

表达式由运算符、操作数、括号等组成。最简单的表达式就是一个数。

之前讲过声明变量时可以把数值赋给变量,这个过程叫变量赋初值。

除此以外,还可以先声明变量,再为其赋值。

例如,下面的代码先声明整型变量i,然后将常量100赋值给i。

int i;
i=100;

练习;

下面的代码声明了3个整型变量i、j、k,先为变量i、j赋值,再将i+j的值赋43.

 4.字符型变量

char关键字用来定义字符型变量,其在内存中占用1个字节。

例如:

char ch1;//声明一个字符变量ch1 
ch1='a'; //给字符变量赋值 

字符型变量在内存中存储的是字符的ASCII码,即一个无符号整数。

其形式与整型变量的存储形式一样,因此字符型数据与整型数据之间可以通用。

也就是说:

(1)一个字符型数据,既可以字符形式输出,也可以整数形式输出。

(2)允许对字符数据进行算术运算,即对它们的ASCII码值进行算术运算。

练习:

定义两个字符型变量并赋值,一个字符进行减32计算,另一个字符进行加32计算,最后这两个字符分别进行加10计算,并通过格式化输出函数printf()以%d和%c格式输出

using namespace std;
int main()
{
	char ch1,ch2;
	ch1='A';ch2='b';//为ch1,ch2赋值 
	printf("ch1=%c,ch2=%c\n",ch1-32,ch2+32);//用%c格式输出字符变量和32的运算结果 
	printf("ch1+10=%d\n",ch1+10);//用%d格式输出
	printf("ch1+10=%c\n",ch1+10);//用%c格式输出
	printf("ch2+10=%d\n",ch2+10);//用%d格式输出
	printf("ch2+10=%c\n",ch2+10);//用%c格式输出
	
 } 

感谢大家支持!

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

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

相关文章

鸢尾花书实践和知识记录[6-23数据聚类]

文章目录 思维导图数据聚类和引例基于图论的聚类算法算法流程1构造数据构造距离矩阵相似度相似度矩阵创建图 拉普拉斯矩阵标准拉普拉斯矩阵(Combinatorial Laplacian)归一化拉普拉斯矩阵 (Normalized Laplacian)无标度拉普拉斯矩阵 (Signless Laplacian)归一化对称拉普拉斯矩阵…

这么好看的桌面时钟 怎么能不分享给大家

最近小编发现了非常好用的桌面时钟。桌面时钟顾名思义就是可以放在桌面上的时钟&#xff0c;这是一款界面优美,功能实用,易于操作的桌面时钟工具芝麻时钟&#xff08;下载地址&#xff1a;https://clock.zhimasoft.cn/&#xff09;。 1、首先来看下这些时钟的效果&#xff0c;…

Ping32企业加密软件:保护数据安全

在数字化时代&#xff0c;数据安全已成为每个企业不可忽视的重要课题。无论是客户信息、财务报表&#xff0c;还是商业机密&#xff0c;数据的安全性直接关系到企业的声誉与运营。为了应对不断变化的安全威胁&#xff0c;选择一款可靠的企业加密软件尤为重要。在这里&#xff0…

MFC的.rc 和.rc2文件【常见问题】

目录 一、介绍 .rc 文件 .rc2 文件 使用上的建议 二、实例 工程截图 rc文件 rc2文件 注意&#xff1a; 三、使用 能否删除&#xff1f; 一、介绍 在MFC项目中&#xff0c;.rc和.rc2文件都是资源脚本文件&#xff0c;但它们有不同的用途和管理方式。它们两指向的是同…

VS2022使用技巧

目录 如何打开资源管理器如何打开监视窗口 如何打开资源管理器 如何打开监视窗口 前提:必须先按f10 开始调试起来了

Typora+PicGo实现自动上传图片至图床

文章目录 前言图床选择图床去不图床 配置PicGo安装Typora对象存储七牛云又拍云 前言 使用过Typora的小伙伴应该已经发现&#xff0c;若是想分享给别人看不但需要发送md文件&#xff0c;还需要把对应的图片一起发给对方&#xff0c;否则图片无法显示。 但是每次都要打个压缩包发…

USIM 卡的鉴权原理

USIM 卡的一个重要功能是用来做鉴权。鉴权是移动通信中非常重要的概念&#xff0c;具体的实现需要很复杂的算法。 鉴权&#xff1a;就是鉴定你是否拥有访问网络的权利。用户在开卡后&#xff0c;手机的 USIM 卡里和运营商的核心网中都将存储一个密钥&#xff0c;或者说一个密码…

进程同步问题

在操作系统中引入进程后&#xff0c;一方面系统中多道程序可以并发进行&#xff0c;有效的改善了资源利用率&#xff0c;提高了系统的吞吐量。但另一方面&#xff0c;系统变得更加复杂了&#xff0c;如果不能通过有效措施对多个进程进行有效管理&#xff0c;那么必然会因为这些…

关于mac下的nvm设置淘宝镜像源

1. 进入配置文件修改镜像源 vim ~/.bash_profile增加下面内容 export NVM_NODEJS_ORG_MIRRORhttps://npmmirror.com/mirrors/node/2. 查看远程node镜像 nvm ls-remote3. 下载镜像 nvm install 14.17.64. 使用镜像 nvm use 14.17.6

Windows系统编程 - 目录操作、磁盘、卷信息

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天继续讲解Windows系统编程的相关知识:目录操作 目录 目录操作 创建目录 通过CreateDirectory函数创建目录 原型: BOOL CreateDirectoryA([in] LPCSTR lpPathName,//目录名称[in, opt…

ORA-01031 权限不足

目录 1. 问题描述2. 问题解决 1. 问题描述 通过PL/SQL客户端&#xff0c;使用scott账户登录后&#xff0c;创建用户时&#xff0c;提示ORA-01031. 2. 问题解决 通过 cmd sqlplus进入Oracle 通过system&#xff08;密码manager&#xff09;登录 要授权的是scott账户 gran…

Flutter包管理(三)

1、作用 在APP的实际开发过程中往往会依赖很多包&#xff0c;而这些包之间存在着交叉依赖、版本依赖&#xff0c;由开发者自己管理手动管理会非常麻烦&#xff0c;每种开发生态或编程官方会提供一些包的管理工具&#xff0c;在Flutter中我们在pubspec.yaml文件中来管理第三方依…

msvcp140.dll丢失的5个解决方法,全面解读msvcp140.dll丢失问题

msvcp140.dll文件的丢失可能会引发一系列潜在问题并对计算机系统产生多方面的影响。首先&#xff0c;这个文件是Microsoft Visual C Redistributable Package的一部分&#xff0c;对于许多基于Windows的应用程序运行至关重要。一旦丢失&#xff0c;可能会导致部分软件无法正常启…

【AI系统】AI系统的组成

AI系统的组成是实现其设计目标的基础。本文将详细介绍AI系统的各个组成部分&#xff0c;以及它们如何协同工作以支持AI应用程序的开发和运行。 I. 引言 AI系统的复杂性要求其组成不仅要关注单一的硬件或软件&#xff0c;而是需要一个多层次、多维度的架构设计。这包括从应用与…

JavaWeb三大组件之Servlet

1. Servlet 一、Servlet介绍 1、概念 Servlet&#xff08;Server Applet&#xff09;是Java Servlet的简称&#xff0c;称为小服务程序或服务连接器&#xff0c;用Java编写的服务器端程序&#xff0c;具有独立于平台和协议的特性&#xff0c;主要功能在于交互式地浏览和生成…

链表(3)_重排链表_面试题

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 链表(3)_重排链表_面试题 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. 题…

Word排版 | 如何文字部分固定行距、图片(嵌入型)单倍行距

问题描述 在写一个要求比较高的项目报告&#xff0c;总共有109页 89张图片&#xff0c;而且必须用word写 因此&#xff1a; 文字部分需要固定行距23磅图片部分需要单倍行距&#xff08;不然无法使用嵌入式&#xff09; 难点 文字和图片难以有效分离&#xff0c;无法分别设…

Redis分布式锁-秒杀类锁不住及各种因为锁导致的“血案”现场全侦破代码详解

背景 继上文“详解Redis分布式锁在SpringBoot的Async方法中没锁住的坑”不少读者发觉用了我的方法还是在并发的情况下有锁不住&#xff01; 于是我和几个没有锁住的读者了解了它们的场景&#xff0c;才知道他们在认知上存在几个误区&#xff0c;同时也发现这一块内容、知识真…

【Docker】06-DockerCompose

1. Docker compose 2. Docker Compose部署项目 docker-compose.yml version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3307:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "/root/docker/mysql/…

【GESP】C++一级练习BCQM3037,简单计算,国庆七天乐收官

又回到了简单计算的题目&#xff0c;继续巩固练习。 题解详见&#xff1a;https://www.coderli.com/gesp-1-bcqm3037/ 【GESP】C一级练习BCQM3037&#xff0c;简单计算&#xff0c;国庆七天乐收官 | OneCoder又回到了简单计算的题目&#xff0c;继续巩固练习。https://www.cod…