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

news2024/11/12 15:34:18

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++的小伙伴们可以私我拿到免费安装包

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

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

相关文章

HTML 标签简写和全称及其对应的中文说明和实例

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML 标签简写及全称</title><style>…

C/C++ list模拟

模拟准备 避免和库冲突&#xff0c;自己定义一个命名空间 namespace yx {template<class T>struct ListNode{ListNode<T>* _next;ListNode<T>* _prev;T _data;};template<class T>class list{typedef ListNode<T> Node;public:private:Node* _…

宝塔:如何开启面板ssl并更新过期ssl

1、登录宝塔面板 > 前往面板设置 > 最上方的安全设置 > 面板SSL > 面板SSL配置 打开后先查看自签证书的时间&#xff0c;如果时间是已经过期的&#xff0c;就前往这个目录&#xff0c;将该目录下所有文件都删掉 重新回到面板SSL配置的位置&#xff0c;打开后会看到…

web后端开发--请求响应

目录 前言 请求 简单参数 原始方法 Spring方式 Post请求乱码处理 实体参数 简单实体参数 复杂实体参数 ​编辑 数组集合参数 数组参数 ​编辑 集合参数 日期参数 ​编辑 Json参数 ​编辑 传递json数据 json数组 json对象&#xff08;POJO&#xff09; jso…

conda篇----在已有conda环境的基础上升级python包

conda篇----在已有conda环境的基础上升级python包 原先的python版本 第一步&#xff1a; conda update --all(py11) [xxxaivrs01 xxx]$ conda update --all Collecting package metadata (current_repodata.json): done Solving environment: done> WARNING: A newer vers…

PTC可复位保险丝 vs 传统型保险丝:全面对比分析

PTC可复位保险丝&#xff0c;又称为自恢复保险丝、自恢复熔断器或PPTC保险丝&#xff0c;是一种电子保护器件。它利用材料的正温度系数效应&#xff0c;即电阻值随温度升高而显著增加的特性&#xff0c;来实现电路保护。 当电路正常工作时&#xff0c;PTC保险丝呈现低阻态&…

可理解性评估:使用Google Gemini优化语音识别的意义保留

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

从零开始实现大语言模型(三):Token Embedding与位置编码

1. 前言 Embedding是深度学习领域一种常用的类别特征数值化方法。在自然语言处理领域&#xff0c;Embedding用于将对自然语言文本做tokenization后得到的tokens映射成实数域上的向量。 本文介绍Embedding的基本原理&#xff0c;将训练大语言模型文本数据对应的tokens转换成Em…

MongoDB - 集合和文档的增删改查操作

文章目录 1. MongoDB 运行命令2. MongoDB CRUD操作1. 新增文档1. 新增单个文档 insertOne2. 批量新增文档 insertMany 2. 查询文档1. 查询所有文档2. 指定相等条件3. 使用查询操作符指定条件4. 指定逻辑操作符 (AND / OR) 3. 更新文档1. 更新操作符语法2. 更新单个文档 updateO…

【AI前沿】深度学习:神经网络基础

文章目录 &#x1f4d1;引言一、神经元和感知器1.1 神经元的基本概念1.2 感知器模型 二、多层感知器&#xff08;MLP&#xff09;2.1 MLP的基本结构2.2 激活函数的重要性2.3 激活函数2.4 激活函数的选择 三、小结 &#x1f4d1;引言 深度学习是现代人工智能的核心技术之一&…

p12初步认识c语言

1.初识c语言 什么是c语言 c语言是一门计算机语言 计算机语言是什么 人和计算机交流语言 c/c/JAVA/python 语言发展&#xff1a; 二进制语言 硬件-电-正电/负电 1010001010101010101010101010手册 科学家 1010100010-ADD -助记符-汇编语言 B语言 C语言 C、---高级…

【全面介绍语言模型的原理,实战和评估】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🥂语言模型的原理 🥂语言模型基于统计和机器学习的原理,目标…

实验1 —— 安全策略的练习

实验拓扑图 实验要求 1.DMZ区内的服务器&#xff0c;办公区仅能在办公时间内&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;可以访问&#xff0c;生产区的设备全天可以访问&#xff1b; 2.生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 3.办公区…

Java protobuf序列化

Protobuf概述 Protobuf&#xff08;全称&#xff1a;Protocol Buffers&#xff09;是由 Google 开发的一种语言中立、平台无关、可扩展的序列化协议。它用于高效地结构化数据的序列化和反序列化。Protobuf 的主要特点是其紧凑、高效和可扩展的编码格式&#xff0c;使其在各种网…

Nginx中文URL请求404

这两天正在搞我的静态网站。方案是&#xff1a;从思源笔记Markdown笔记&#xff0c;用MkOcs build成静态网站&#xff0c;上传到到Nginx服务器。遇到一个问题&#xff1a;URL含有中文会404&#xff0c;全英文URL则正常访问。 ‍ 比如&#xff1a; ​​ ‍ 设置了utf-8 ht…

mac安装配置cmake

本机是2015 macbook pro mid&#xff0c;已经有点老了&#xff0c;用homebrew下cmake老出问题 其实cmake官网安装也不麻烦 一、官网下载对应安装包 Download CMake 和所有dmg文件一样安装 二、改成命令行使用 一般来说 tutorial 给的都是命令行build 命令行的设置如下&am…

React Hooks学习笔记

一、usestate的使用方法-初始化state函数 import React, { useState } from "react"; function App() {const [count, setCount] useState(0);return (<div><p>点击{count}次</p><button onClick{() > setCount(count 1)}>点击</bu…

【TAROT学习日记】韦特体系塔罗牌学习(1)——愚者 THE FOOL 0

韦特体系塔罗牌学习&#xff08;1&#xff09;——愚者 THE FOOL 0 https://www.tarotchina.net/major-arcana0-vip/ 目录 韦特体系塔罗牌学习&#xff08;1&#xff09;——愚者 THE FOOL 0牌面分析1. 基础信息2. 图片元素 正位牌意1. 关键词/句2.爱情婚姻3. 学业事业4. 人际关…

原生小程序生成二维码并保存到本地

需求&#xff1a;我要在一个页面中生成一个二维码&#xff0c;并且这个二维码可以长按保存到本地或者发送给好友&#xff1b; 我这里是将生成的canvas二维码转换成图片&#xff0c;利用长按图片进行保存或转发 效果图&#xff1a; 第一步先下载对应的包&#xff1a; npm instal…

Web3知识图谱,一篇读完

这张图展示了区块链生态系统的架构和主要组件。以下是对图中内容的概括总结&#xff1a; 基础层&#xff1a; 底层基础设施&#xff1a;包括光纤网络、P2P网络、非对称加密、哈希算法、默克尔树和随机数生成。共识机制&#xff1a; PoW&#xff08;工作量证明&#xff09;: 比特…