【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 会导致未定义行为,这通常会导致变量存储最大或最小可能值,或者完全不可预测的值。
  • 了解不同整型的取值范围和选择合适的整型对于防止溢出和意外行为非常重要。

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

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

相关文章

蓝桥杯2024/1/31----第十届省赛题笔记

题目要求&#xff1a; 1、 基本要求 1.1 使用大赛组委会提供的国信长天单片机竞赛实训平台&#xff0c;完成本试题的程序设计 与调试。 1.2 选手在程序设计与调试过程中&#xff0c;可参考组委会提供的“资源数据包”。 1.3 请注意&#xff1a; 程序编写、调试完成后选手…

RocksDB是如何实现存算分离的

核心参考文献&#xff1a; Dong, S., P, S. S., Pan, S., Ananthabhotla, A., Ekambaram, D., Sharma, A., Dayal, S., Parikh, N. V., Jin, Y., Kim, A., Patil, S., Zhuang, J., Dunster, S., Mahajan, A., Chelluri, A., Datye, C., Santana, L. V., Garg, N., & Gawde,…

Flink CEP实现10秒内连续登录失败用户分析

1、什么是CEP&#xff1f; Flink CEP即 Flink Complex Event Processing&#xff0c;是基于DataStream流式数据提供的一套复杂事件处理编程模型。你可以把他理解为基于无界流的一套正则匹配模型&#xff0c;即对于无界流中的各种数据(称为事件)&#xff0c;提供一种组合匹配的…

Python完善APC netbotz 250报告功能实现主动式运维。

首先介绍一下APC netbotz 250, 这是施耐德推出的一款机架式监控主机&#xff0c;能够对所有IT环境进行经济有效而且灵活的监控&#xff0c;号称APC史上性价比最高的环境监测方案&#xff0c;这可不是我吹的&#xff0c;是APC官网的介绍&#xff0c;可参考下面的官网截图。 我们…

【原创】VMware创建子网,并使用软路由获得访问互联网的能力,并通过静态路由让上层网络访问位于虚拟机的子网

前言 一看标题就很离谱&#xff0c;确实内容也有点复杂&#xff0c;我的初衷是为后面搞软路由做准备&#xff0c;先通过VMware进行可行性验证&#xff0c;确定方案是否可行&#xff0c;再做下一步的计划。结论当然可以的&#xff0c;能通能访问&#xff0c;强的不行。 网络拓…

重大进展:国产200层存储芯片实现量产,超越国际领先企业

近日&#xff0c;中国芯片技术领域迎来了一项历史性突破&#xff1a;200层以上的存储芯片率先实现量产&#xff0c;这一成就不仅超越了国外存储芯片巨头&#xff0c;更预示着中国有望成为全球行业的领军者。 后起之秀&#xff0c;鱼跃龙门 在这场技术的赛跑中&#xff0c;中国…

“死“社群先不要扔,想办法激活一下,隔壁的运营都馋哭了

私域运营已成为当下很多企业寻求增长的标配。在这过程中&#xff0c;社群运营就是极为重要的一个环节。过去我们为了流量&#xff0c;疯狂建群拉人。但建社群容易活跃难&#xff0c;活跃一段时间后&#xff0c;社群会越来越安静。 不仅如此&#xff0c;群主和管理员也渐渐疏于…

行为型设计模式—迭代器模式

迭代器模式&#xff1a;也叫作游标模式&#xff0c;能在不暴露复杂数据结构内部细节的情况下遍历其中所有的元素。在迭代器的帮助下&#xff0c; 客户端可以用一个迭代器接口以相似的方式遍历不同集合中的元素。 当集合背后为复杂的数据结构&#xff0c;且希望对客户端隐藏其复…

双非本科准备秋招(12.2)—— 力扣栈与队列

复习一下栈和队列的基础知识&#xff0c;刷几道题上上手。 1、102. 二叉树的层序遍历 广度优先遍历嘛&#xff0c;每次拓展一个新结点&#xff0c;就把新结点加入队列&#xff0c;这样遍历完队列中的元素&#xff0c;顺序就是层序遍历。 class Solution {public List<Lis…

分布式搜索引擎_学习笔记_3

分布式搜索引擎03 0.学习目标 1.数据聚合 **聚合&#xff08;aggregations&#xff09;**可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售…

91 C++对象模型探索。RTTI运行时类型识别回顾 与 存储位置介绍

一&#xff0c;RTTI 运行时类型识别&#xff0c;简单回顾 C运行时类型识别RTTI&#xff0c;要求父类这种必须 至少有一个虚函数&#xff0c;如果父类中没有虚函数&#xff0c;那么得到的RTTI就不准确&#xff1b; RTTI就可以在执行期间查询一个多态指针&#xff0c;或者多态应…

C++:第十四讲动态规划初步

每日C知识 想要在做C小游戏里实现等待效果&#xff0c;可以用Sleep。 Sleep函数可以使计算机程序&#xff08;进程&#xff0c;任务或线程&#xff09;进入休眠&#xff0c;使其在一段时间内处于非活动状态。 一般需要头文件windows.h。 注意"Sleep"首字母要大写…

k8s Sidecar filebeat 收集容器中的trace日志和app日志

目录 一、背景 二、设计 三、具体实现 Filebeat配置 K8S SideCar yaml Logstash配置 一、背景 将容器中服务的trace日志和应用日志收集到KAFKA&#xff0c;需要注意的是 trace 日志和app 日志需要存放在同一个KAFKA两个不同的topic中。分别为APP_TOPIC和TRACE_TOPIC 二、…

LLM之Agent(十)| 本地安装Microsoft AutoGen Studio 2.0教程

2021年3月&#xff0c;微软发布了AutoGen[2]&#xff0c;这是一个使用多个代理开发LLM应用程序的框架&#xff0c;这些代理可以协作解决任务。 2024年1月&#xff0c;微软推出了一款新的应用程序&#xff0c;它名为AutoGen Studio[3]&#xff0c;可以简化AI Agent执行过程。 一…

JavaScript入门

第二个知识点&#xff1a;javascript的基本语法 定义变量 在JavaScript里面&#xff0c;没有int&#xff0c;string 之类的数据类型&#xff0c;只有 var var num 1; var string "天玄地号"; 在javascript中&#xff0c;写完一句语句之后可以不加分号&#xff…

MyBatis概述与MyBatis入门程序

MyBatis概述与MyBatis入门程序 一、MyBatis概述二、入门程序1.准备开发环境&#xff08;1&#xff09;准备数据库&#xff08;2&#xff09;创建一个maven项目 2.编写代码&#xff08;1&#xff09;打包方式和引入依赖&#xff08;2&#xff09;新建mybatis-config.xml配置⽂件…

直方图均衡化原理与代码实现

1. 简介 直方图均衡化是一种用于增强图像对比度的图像处理技术。通过调整图像的灰度级别分布&#xff0c;直方图均衡化能够使图像中的像素值更加均匀分布&#xff0c;从而增强图像的细节和对比度。 2. 原理 直方图均衡化的原理是通过调整图像的累积分布函数&#xff08;CDF&…

H2数据库学习总结

H2数据库-简介 H2 是开源的轻量级Java数据库。它可以嵌入Java应用程序中或以客户端-服务器模式运行。 H2 数据库主要可以配置为作为内存数据库运行&#xff0c;这意味着数据将不会持久存储在磁盘上。 由于具有嵌入式数据库&#xff0c;因此它不用于生产开发&#xff0c;而主要…

017 JavaDoc生成文档

什么是JavaDoc 示例 package se;/*** 用于学习Java* author Admin* version 1.0* since 1.8*/ public class Test20240119 {/*** 主方法* param args*/public static void main(String[] args) {// 你好&#xff0c;世界System.out.println("Hello world");} } 写一…

C语言实战项目<贪吃蛇>

我们这篇会使用C语言在Windows环境的控制台中模拟实现经典小游戏贪吃蛇 实现基本的功能&#xff1a; 结果如下: 1.一些Win32 API知识 本次实现呢我们会用到一些Win32 API的知识(WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口): 1)控制窗口大小 我们可以使用…