顺序结构 ( 四 ) —— 标准数据类型 【互三互三】

C++语言提供了丰富的数据类型,本节介绍几种基本的数据类型:整型、实型、字符型。它们都是系统定义的简单数据类型,称为标准数据类型。

整型(integer)

在C++语言中,整型类型标识符为int。根据整型变量的取值范围又可将整型变量定义为以下8种整型类型:

类型

定义标识符

数值范围

short[int]

2(16位)

-32768~32767

[long] int4(32位)-2147483648~2147483647

long [int]4(32位)-2147483648~2147483647

long long [int]8(64位)-9223372036854775808~9223372036854775807

 unsigned [int]2(16位)0~65535

unsigned short [int]2(16位)0~65535

unsigned long [int]4(32位)0~4294967295

unsigned long long8(64位)0~18446744073709551615

实型(Real types)

数据类型定义标识符数值范围占字节数有效位数
单精度实型float-3.4E-38~3.4E+384(32位)6~7位
双精度实型double-1.7E+308~1.7E+3088(64位)15~16位

长双精

度实型

long double-3.4E+4932~1.1E+493216(128位)18~19位
布尔变量bool真true或假false之一1(8位)      \

字符型(char)

字符常量有以下两种表示法:      

1、普通表示形式

字符常量是由单个字符组成,所有字符采用ASCII编码,ASCII编码共有128个字符(表2-4)。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如:'a','A','0'等。如字符A的序号是65,字符a的序号是97, 字符0的序号的48。

2、转义字符表示形式

转义字符有三种用法:表示控制字符、表示特殊字符、表示所有字符。常用的转义字符如下表所示。

转义字符含义
'\n'换行
'\t'水平制表
'\b'退格
'\r'回车(不换行)
'\0'空字符
'\’'单引号
'\”'双引号
'\\'一个反斜杠字符
'\ddd'1~3位八进制数所代表的字符
'\xhh'1~2位十六进制数所代表的字符

ASCII编码表见下图:

例题

例1】分别定义int,short类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。

【参考程序】

#include<iostream>
using namespace std;
int main()
{   
	int x; 
	short y;  
	cout<<sizeof(x)<<" "<<sizeof(y)<<endl;                                                   
                        //sizeof返回一个对象或者类型所占的内存字节数
	return 0;
}

基于char数据的这个特点,它可以和int变量一样做加减运算,例1说明了这种用法。

例2计算ASCII值

【参考程序】

#include<cstdio>
#include<iostream> 
using namespace std;
int main()
{
    int b = 'A';               //初始b值
    b *= 2;                    //相当 b = b*2
    printf("%d",b);            //输出b值
    return 0;
}

【程序解释】     

①程序定义int整型变量b,但是并没有初始化一个整数,而是字符‘A’,通过ASCII码表可以查到A对应的十进制ASCII码值是65。     

②然后做b *= 2的运算,b = b*2,即65×2,结果为130。

数据类型转换

C++语言中,不同数据类型的运算对象进行混合运算,或者需要将一个表达式的结果转换成期望的类型时,就需要依据数据类型转换规则进行转换。

1、混合运算时的类型转换规则

整型、实型、字符型数据间可以混合运算。在这种情况下,需要将不一致的数据类型转换成一致的数据类型,然后进行运算。为了保证运算精度,系统在运算时的转换规则是将存储长度较短的运算对象转成存储长度较长的类型,然后再进行处理。这种转换是系统自动进行的,具体如图所示。

混合运算时的类型转换规则

【说明如下】

1)纵向箭头表示必定会进行的转换,如float型数据必先转换为double型数据,然后与其他操作数 进行运算。与此类似,char型或short型数据必先转换为int型数据,然后进行运算。 2)横向箭头表示当运算对象为不同类型数据时的转换方向,如int型数据与unsigned型数据进行运 算,int型转换为unsigned型后方可进行运算。int型与double型进行运算,int型直接转换为double 型后进行运算,不能理解为先转换为unsigned int型,然后转换为long int型,最后再转换为double型。

2、赋值时的类型转换规则

当赋值运算符两侧的数据类型不同时,需进行类型转换,这种转换是系统自动进行的,转换规则如下:

1)float、double型赋值给int型:直接截断小数。 例如,“int i=f+0.6;”,f的值为4.0,右边算术表达式运算后的结果为4.6的double型数据,根据上述转换原则,直接舍弃小数,所以i的值为4。

2)int、char型赋值给float、double型:补足有效位以进行数据类型转换。 例如:“float f=4;”,float为7位有效数字,所以f的值为4.0000000。

3)char型(1字节)赋给int型(4字节):数值赋给int型的低8位,其它位补0。

4)long  int型赋值给int型:long int型截断低字节给int型。

5)int型赋值给long int型:赋给long int型的低16位,如果int型的最高位是0,则long int的高16位全为0;如果int型的最高位是1,则long int型的高16位全为1(称为“符号扩展”)。 6)unsigned int型赋值给int型:直接传送数值。

7)非unsigned int型赋值给位数相同的unsigned int型:直接传送数值。

3、强制类型转换

在C++语言中,还允许强制类型转换,即将某一数据的数据类型转换为指定的另一种数据类型,强制类型转换只是临时转换。强制转换运算符组成的运算表达式的一般形式为:

(类型名)(表达式)    

例如:已知有变量定义“int b=7;float a=2.5,c=4.7;”,求下面算术表达式的值。          

a+(int)(b/3*(int)(a+c)/2.0)%4

根据运算符的结合性规则,表达式要自左至右执行,b/3为2,2*(int)(a+c)为14,14/2.0为7.0,强制类型转换后为7,7%4为3,a的值2.5与3相加,最终结果为5.5。

4、例题

计算成绩

【题目描述】    

牛牛最近学习了C++入门课程,这门课程的总成绩计算方法是:    

总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50%    

牛牛想知道,这门课程自己最终能得到多少分(整数)。

样例输入:100  100  80   样例输出:90

【分析】     如果根据题目描述,将A,B,C定义为整型数据,而在运算过程中出现浮点型数据,就会涉及数据类型的转换,最后以整型输出。 程序如下:

#include<iostream>
using namespace std;
int main(){
	int A,B,C,ans;
	cin>>A>>B>>C;                    //输入A,B,C成绩
	ans=(int)(A*0.2+B*0.30+C*0.50);  //强制类型转换,不加(int)自动转换
	cout<<ans;                       //输出总成绩
	return 0;
}

总结 

有不懂的地方可以si我,和我一起学习C++吧。

备注

还没有下载DEV-C++的小伙伴们可以私我拿到免费安装包

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【RHCE】基于用户认证和TLS加密的HTTP服务(HTTPS)

目录 一、创建用户账号 二、TLS加密 三、配置http服务子配置文件 四、创建访问http服务的文件夹以及输入重定向到文件 五、配置Linux本地仓库以及Windows下的本地仓库 六、基础操作 七、测试 一、创建用户账号 用户认证 # 创建两个账户 [rootlocalhost ~]# htpasswd -…

YOLOv10改进 | 损失函数篇 | SlideLoss、FocalLoss、VFLoss分类损失函数助力细节涨点(全网最全)

一、本文介绍 本文给大家带来的是分类损失 SlideLoss、VFLoss、FocalLoss损失函数&#xff0c;我们之前看那的那些IoU都是边界框回归损失&#xff0c;和本文的修改内容并不冲突&#xff0c;所以大家可以知道损失函数分为两种一种是分类损失另一种是边界框回归损失&#xff0c;…

【安全设备】数据库审计

一、什么是数据库审计 数据库审计&#xff08;简称DBAudit&#xff09;是一种以安全事件为中心&#xff0c;实时记录网络上的数据库活动&#xff0c;并对数据库操作进行细粒度审计的合规性管理技术。它通过对用户访问行为的记录、分析和汇报&#xff0c;帮助用户事后生成合规报…

一套基于 Ant Design 和 Blazor 的开源企业级组件库

前言 今天大姚给大家分享一套基于Ant Design和Blazor的开源&#xff08;MIT License&#xff09;、免费的企业级组件库&#xff08;喜欢Ant Design风格的同学推荐使用&#xff09;&#xff1a;Ant Design Blazor。 项目特性 提炼自企业级中后台产品的交互语言和视觉风格。 开…

Codeforces Round #956 (Div. 2) and ByteRace 2024 E. I Love Balls(概率期望)

题目 思路来源 官方题解 题解 特殊球不会改变普通球的顺序&#xff0c;所以都是alice拿一半里较多的部分 n-k1一半向上取整就是(n-k2)/2&#xff0c;同理n-k个一般向上取整(n-k1)/2 每个特殊球独立地来看&#xff0c;在每个空隙的概率相同 所以分别统计特殊球和非特殊球的…

《Windows API每日一练》9.1.5 自定义资源

自定义资源&#xff08;Custom Resources&#xff09;是在 Windows 程序中使用的一种资源类型&#xff0c;用于存储应用程序特定的数据、图像、音频、二进制文件等。通过自定义资源&#xff0c;开发者可以将应用程序所需的各种资源文件集中管理和存储&#xff0c;便于在程序中访…

华为HCIP Datacom H12-821 卷34

1.单选题 防火墙默认已经创建了一些安全区域,以下哪一个安全区域不是防火墙上默认存在的? A、Trust B、DMZ C、Internet D、Local 正确答案&#xff1a; C 解析&#xff1a; 防火墙默认情况下为我们提供了三个安全区域&#xff0c;分别是 Trust、DMZ和Untrust 2.判断题 …

【RHCE】实验(HTTP,DNS,SELinux,firewalld的运用)

一、题目 二、主服务器配置 1.下载HTTP服务&#xff0c;DNS服务 [rootlocalhost ~]# yum install -y httpd bind 2.开启防火墙&#xff0c;放行服务 # 开启防火墙 [rootlocalhost ~]# systemctl start firewalld # 放行服务 [rootlocalhost ~]# firewall-cmd --add-service…

日常学习-20240710

1、一次一千万条数据插入和删除案例&#xff1a; 第一次&#xff1a;插入--批量插入&#xff0c;每次插入5000条数据&#xff0c;总耗时28min,数据无异常 删除--通过sql语句一次性删除&#xff0c;总耗时1h52min;一次删除的数据过多导致mysql的备份恢复文件极其庞大&#xff0…

在CentOS7虚拟机上使用Ollama本地部署Llama3大模型中文版+Open WebUI

一、创建虚拟机 1.1按照常规的CentOS教程来安装就行&#xff0c;我用的是以下版本&#xff1a; VMware版本&#xff1a;VMware Workstation Full v12.1.0-3272444 中文正式版 镜像版本&#xff1a;CentOS-7-x86_64-DVD-2009 1.2虚拟机配置参数&#xff0c;如下&#xff1a; 二…

彩虹小插画:成都亚恒丰创教育科技有限公司

彩虹小插画&#xff1a;色彩斑斓的梦幻世界 在繁忙的生活节奏中&#xff0c;总有一抹温柔的色彩能悄然触动心弦&#xff0c;那就是彩虹小插画带来的梦幻与宁静。彩虹&#xff0c;这一自然界的奇迹&#xff0c;被艺术家们巧妙地融入小巧精致的插画之中&#xff0c;不仅捕捉了瞬…

Camera Raw:直方图

Camera Raw 的直方图 Histogram面板不仅提供了照片亮度和色彩分布信息&#xff0c;还具备多项实用功能&#xff0c;辅助评估和调整照片。 ◆ ◆ ◆ 直方图的构成 直方图是一个二维坐标系统&#xff0c;横坐标表示不同程度的像素亮度&#xff0c;从左到右通常对应的是 0 ~ 255…

14-60 剑和诗人34 - Kubernetes 是部署 LLM 的首选平台

​​​​ 介绍 近年来&#xff0c;大型语言模型 (LLM) 一直在彻底改变自然语言处理领域。从 GPT-3 到 PaLM 等&#xff0c;这些模型可以生成类似人类的文本、回答问题、总结文档等等。然而&#xff0c;训练和部署 LLM 需要大量的计算。随着这些模型的规模和能力不断增长&#…

three完全开源扩展案例01-三角形渐变

演示地址 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.jsconst box document.getElementById(box)const scene new THREE.Scene()const camera new THREE.PerspectiveCamera(75, box.clientWidth / box.client…

Golang | Leetcode Golang题解之第227题基本计算器II

题目&#xff1a; 题解&#xff1a; func calculate(s string) (ans int) {stack : []int{}preSign : num : 0for i, ch : range s {isDigit : 0 < ch && ch < 9if isDigit {num num*10 int(ch-0)}if !isDigit && ch ! || i len(s)-1 {switch preS…

免杀笔记 ---> Session0--DLL注入

刚更新完上一篇&#xff0c;于是我们就马不停蹄的去跟新下一篇&#xff01;&#xff01; Session0注入 &#xff1a;&#xff1a; 各位看官如果觉得还不错的可以给博主点个赞&#x1f495;&#x1f495; 这次&#xff0c;我把这个脚本直接传到Github上了 喜欢的师傅点个Star噢…

VScode代码对齐快捷键

解决复制过来代码对齐格式问题。 左对齐&#xff1a;Ctrl[ 右对齐&#xff1a;Ctrl]

科普文:jvm笔记

一、JVM概述# 1. JVM内部结构# 跨语言的平台&#xff0c;只要遵循编译出来的字节码的规范&#xff0c;都可以由JVM运行 虚拟机 系统虚拟机 VMvare 程序虚拟机 JVM JVM结构 HotSpot虚拟机 详细结构图 前端编译器是编译为字节码文件 执行引擎中的JIT Compiler编译器是把字节…

WPF Menu实现快捷键操作

很多小伙伴说&#xff0c;在Menu中&#xff0c;实现单个快捷键操作很简单&#xff0c;怎么实现多个快捷键操作和&#xff0c;组合快捷键呢&#xff0c;今天他来了。 上代码和效果图 一、Ctrl Shift 任意子母键实现快捷键组合 <Window x:Class"XH.TemplateLesson.M…

Collections集合工具类简介

Collections集合工具类 特点&#xff1a;构造私有&#xff0c;方法都是静态的&#xff0c;通过类名直接调用 static <T> boolean addAll(Collection<? super T> c, T... elements) 作用&#xff1a;批量添加元素 public class Test {public static void main(S…