【C/C++】C/C++编程——整型(一)

整型

C++ 中的整型是基本的数据类型之一,用于表示没有小数部分的数。这包括正整数、负整数以及零。C++ 提供了多种整型,以适应不同大小的数值需求和优化内存使用。

整型的种类

C++ 中的整型可以根据其大小(即占用的字节数)和能够表示的数值范围来分类。下表概述了 C++ 中常见的整型,包括它们的名称和在大多数现代编译器和系统中的典型占用空间。需要注意的是,实际的大小可能根据编译器和目标平台的架构(如 32 位或 64 位系统)而有所不同。

类型典型大小 (字节)取值范围(有符号)说明
short intshort2-32,768 至 32,767短整型,用于节省内存空间,适合存储较小的整数值。
int4-2,147,483,648 至 2,147,483,647最常用的整型,适用于一般整数运算。
long intlong4 或 832 位:-2,147,483,648 至 2,147,483,647
64 位:-9,223,372,036,854,775,808 至 9,223,372,036,854,775,807
长整型,大小可能等于或大于 int,在 64 位系统中通常更大,用于更大范围的整数。
long long intlong long8-9,223,372,036,854,775,808 至 9,223,372,036,854,775,807提供最大的整数范围,用于需要非常大数值的场合。

整型的输出

在 C++ 中,输出整型变量的值通常使用 std::cout 对象,它是标准输出流。std::cout 位于 <iostream> 头文件中,并且是用来向控制台(或其他标准输出设备)发送输出的。输出操作通过 << 运算符(插入运算符)完成,该运算符用于将数据从程序发送到标准输出流。

基本用法

输出整型变量的基本语法是:

std::cout << variable;

这里,variable 是你想要输出的整型变量。

示例
#include <iostream>int main() {int myInt = 10;std::cout << "The value of myInt is: " << myInt << std::endl;return 0;
}

运行结果

在这里插入图片描述

在这个示例中,myInt 是一个整型变量,其值被初始化为 10。使用 std::cout 输出一段文本,后面跟着 myInt 的值,最后是一个换行符(通过 std::endl)。

格式化输出

C++ 还提供了一些方法来格式化输出,例如设置字段宽度、填充字符和数值基数(十进制、十六进制、八进制)。

设置字段宽度

使用 std::setw 来设置下一个输出字段的宽度。std::setw 需要 <iomanip> 头文件。

#include <iostream>
#include <iomanip>int main() {int myInt = 42;std::cout << "The value of myInt is: "<< myInt << std::endl;std::cout << "The value of myInt is: " << std::setw(10) << myInt << std::endl;return 0;
}

在这里插入图片描述

在这个示例中,std::setw(10) 设置了字段宽度为 10,因此输出的数字将在一个 10 字符宽的字段中右对齐显示。

设置填充字符

使用 std::setfill 来设置填充字符,这也需要 <iomanip> 头文件。

#include <iostream> // 包含输入输出流
#include <iomanip>  // 包含格式化输出的库int main() {int myInt = 42; // 定义一个整型变量并初始化// 使用std::cout输出myInt,设置字段宽度为10,不足部分用'*'填充std::cout << std::setfill('*') << std::setw(10) << myInt << std::endl;return 0; // 表示程序正常结束
}

在这里插入图片描述

如果 myInt 值为 42,这将输出"********42",因为字段宽度为 10,不足部分用 * 填充。

数值基数

使用 std::hexstd::octstd::dec 可以设置十六进制、八进制和十进制输出。

#include <iostream> // 包含标准输入输出流库int main() {int myInt = 42; // 定义一个整型变量并初始化// 使用十六进制格式输出myInt的值std::cout << "Hex: " << std::hex << myInt << std::endl;// 使用八进制格式输出myInt的值std::cout << "Oct: " << std::oct << myInt << std::endl;// 使用十进制格式输出myInt的值std::cout << "Dec: " << std::dec << myInt << std::endl;return 0; // 表示程序正常结束
}

在这里插入图片描述

在这个例子中使用 std::coutstd::hex 以十六进制格式输出 myInt 的值。输出将以"Hex: "开头,后跟 myInt 的十六进制表示。然后,使用 std::coutstd::oct 以八进制格式输出 myInt 的值。输出将以"Oct: "开头,后跟 myInt 的八进制表示。最后,使用 std::coutstd::dec 以十进制格式输出 myInt 的值。输出将以"Dec: "开头,后跟 myInt 的十进制表示。

整型的输入

在 C++ 中,整型数据的输入是通过标准输入流 std::cin 来完成的,这是一个与 std::cout 相对的输入流对象。std::cin 位于 <iostream> 头文件中,并且主要用于从标准输入设备(通常是键盘)读取数据。

基础用法

要从标准输入读取一个整型变量,基本的语法结构如下:

type variable;
std::cin >> variable;

这里的 type 是整型数据的类型(例如,intshortlonglong long 等),而 variable 是变量的名称。

示例代码
#include <iostream>int main() {int number;std::cout << "Please enter an integer: ";std::cin >> number;std::cout << "You entered: " << number << std::endl;return 0;
}

在这里插入图片描述

在这个示例中,程序首先提示用户输入一个整数,然后使用 std::cin 从键盘读取输入,并将输入的值存储到名为 number 的变量中。最后,程序使用 std::cout 输出用户输入的值。

输入验证

在实际应用中,用户的输入可能不总是符合预期。例如,当期望输入一个整数时,用户可能输入了一个字符或字符串,这会导致 std::cin 进入错误状态,随后的输入操作将会失败。

为了处理这种情况,需要检查 std::cin 的状态,并在发现错误时采取措施。这通常涉及到两个步骤:清除错误标志和丢弃错误输入。

示例代码
#include <iostream>
#include <limits>int main() {int number;std::cout << "Please enter an integer: ";while (!(std::cin >> number)) {std::cin.clear(); // 清除错误标志std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 丢弃错误输入直到下一个换行符std::cout << "Invalid input. Please enter an integer: ";}std::cout << "You entered: " << number << std::endl;return 0;
}

在这里插入图片描述

在这个改进的示例中,如果用户的输入导致 std::cin 进入错误状态,程序会使用 std::cin.clear() 来清除错误标志,然后使用 std::cin.ignore() 来丢弃错误的输入直到下一个换行符。这样,用户就有机会重新输入一个有效的整数。

注意事项

  • 当使用 std::cin 进行输入时,如果输入流中还有其他待处理的数据(如换行符),这些数据可能会影响后续的输入操作。在某些情况下,可能需要额外的 std::cin.ignore() 调用来处理这些额外的数据。
  • 对于超出整型变量表示范围的输入,std::cin 会导致未定义行为,这通常会导致变量存储最大或最小可能值,或者完全不可预测的值。
  • 了解不同整型的取值范围和选择合适的整型对于防止溢出和意外行为非常重要。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

方法阻塞的解决方案之一

1、简单使用 一个h一个cpp文件 #pragma once #include <iostream> #include <thread> #include <atomic> #include <chrono> #include <string>class Person {public:struct dog {std::string name;int age;};public:void a(std::atomic<bo…

笔记本从零安装ubuntu server系统+环境配置

文章目录 前言相关链接ubuntu Server 安装教程屏幕自动息屏关上盖子不休眠MobaXterm外网SSH内网穿透IPV6远程 为什么我要笔记本装Linux为什么要换ubuntu Server版能否连接wifi之后Linux 配置清单总结 前言 之前装了个ubuntu desktop 版&#xff0c;发现没有命令行&#xff0c;…

《HTML 简易速速上手小册》第4章:HTML 的表单与输入(2024 最新版)

文章目录 4.1 表单的基础&#xff08;&#x1f4dd;&#x1f680;&#x1f4ac; 开启沟通的大门&#xff09;4.1.1 表单基础知识点4.1.2 基础示例&#xff1a;创建一个简单的注册表单4.1.3 案例扩展一&#xff1a;创建一个调查问卷4.1.4 案例扩展二&#xff1a;创建一个预订表单…

【01】Linux 基本操作指令

带⭐的为重要指令 &#x1f308; 01、ls 展示当前目录下所有文件&#x1f308; 02、pwd 显示用户当前所在路径&#x1f308; 03、cd 进入指定目录&#x1f308; 04、touch 新建文件&#x1f308; 05、tree 以树形结构展示所有文件⭐ 06、mkdir 新建目录⭐ 07、rmdir 删除目录⭐…

【Java 数据结构】LinkedList与链表

LinkedList与链表 1. ArrayList的缺陷2. 链表2.1 链表的概念及结构2.2 链表的实现 3. LinkedList的模拟实现4.LinkedList的使用4.1 什么是LinkedList4.2LinkedList的使用 5. ArrayList和LinkedList的区别 1. ArrayList的缺陷 上节课已经熟悉了ArrayList的使用&#xff0c;并且…

虚拟机扩容后黑屏卡死解决方法

亲测有效&#xff0c;首先一般是在扩容后黑屏的&#xff0c;现象为开机后看到个横线光标不闪&#xff0c;黑屏&#xff0c;进入不了桌面。原因是硬盘已经满了&#xff0c;所以解决方法就是清理硬盘。所以首先还是要解决登录问题。 开机时按 esc 键进入 GNU GRUB&#xff0c;选择…

windows平台使用tensorRT部署yolov5详细介绍,整个流程思路以及细节。

目录 Windows平台上使用tensorRT部署yolov5 前言&#xff1a; 环境&#xff1a; 1.为什么要部署&#xff1f; 2.那为什么部署可以解决这个问题&#xff1f;&#xff08;基于tensorRT&#xff09; 3.怎么部署&#xff08;只讨论tensorRT&#xff09; 3.0部署的流程 3.1怎…

GoLang和GoLand的安装和配置

1. GoLang 1.1 特点介绍 Go 语言保证了既能达到静态编译语言的安全和性能&#xff0c;又达到了动态语言开发维护的高效率&#xff0c;使用一个表达式来形容 Go 语言&#xff1a;Go C Python , 说明 Go 语言既有 C 静态语言程序的运行速度&#xff0c;又能达到 Python 动态语…

闭包的理解?闭包使用场景

说说你对闭包的理解&#xff1f;闭包使用场景 #一、是什么 一个函数和对其周围状态&#xff08;lexical environment&#xff0c;词法环境&#xff09;的引用捆绑在一起&#xff08;或者说函数被引用包围&#xff09;&#xff0c;这样的组合就是闭包&#xff08;closure&#…

Vite+Vue3使用Vue-i18n笔记

一、下载依赖 vue-i18n yarn add vue-i18n创建存放语言文件的目录 以及配置文件的配置 我是在src/lang 新建index.ts、cn.ts、en.ts以及test文件夹其中再分别新建cn.ts以及en.ts /lang/index.ts 用于导出vue-i18n需要的配置对象 import en from "./en.ts"; import…

无人机在三维空间中的转动问题

前提 这篇博客是对最近一个有关无人机拍摄图像项目中所学到的新知识的一个总结&#xff0c;比较杂乱&#xff0c;没有固定的写作顺序。 无人机坐标系旋转问题 上图是无人机坐标系&#xff0c;绕x轴是翻滚(Roll)&#xff0c;绕y轴是俯仰(Pitch)&#xff0c;绕z轴是偏航(Yaw)。…

开发工具git分支冲突解决

在团队协作的软件开发过程中&#xff0c;Git是一款广泛使用的版本控制系统。然而&#xff0c;当多个开发者同时修改同一文件或代码段时&#xff0c;就会产生分支冲突。解决这些冲突需要仔细的协调和技术知识。本篇博客将介绍Git分支冲突的解决方法&#xff0c;以及开发工具和最…