【003】C++数据类型之整型类型(int)详解

news2024/10/7 16:24:12

C++数据类型之整型变量详解

  • 引言
  • 一、常量和变量
  • 二、整形常量
  • 三、整形变量的定义
  • 四、整型变量的初始化
  • 五、整型变量的声明
    • 5.1、C++ 变量的定义、变量的声明、变量的使用三者的关系
  • 六、键盘(输入设备)给变量赋值
  • 七、案例:键盘获取两个int数值然后求最大值
  • 总结

引言


💡 作者简介:专注于C/C++高性能程序设计和开发,理论与代码实践结合,让世界没有难学的技术。包括C/C++、Linux、MySQL、Redis、TCP/IP、协程、网络编程等。
👉
🎖️ CSDN实力新星,社区专家博主
👉
🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
👉
🔔 专栏地址:C++从零开始到精通
👉
🔔 博客主页:https://blog.csdn.net/Long_xu


🔔 上一篇:【002】C++的关键字介绍

一、常量和变量

(1)常量 是在程序运行时不可更改的数据,其值在定义时就已经确定。常量可以分为字面常量和符号常量两种。

  1. 字面常量:字面常量是指在程序中直接使用的常量,如整数、浮点数、字符和字符串等。例如:
int a = 10; // 整数常量
float pi = 3.14; // 浮点数常量
char ch = 'A'; // 字符常量
string str = "Hello World"; // 字符串常量
  1. 符号常量:符号常量是指在程序中使用一个标识符来表示一个常量,这个标识符称为常量名,常量的值保存在内存中,而常量名只是一个代表该值的别名。符号常量通常用宏定义来实现。例如:
#define PI 3.1415926 // 定义符号常量PI
const int Max = 100; // 定义符号常量Max

(2)变量 是程序中会被修改值的数据,其在程序执行过程中值可以改变。变量包括基本类型变量和复合类型变量两种。

  1. 基本类型变量:基本类型变量是指具有简单数据类型(如整数、浮点数、字符等)的变量。例如:
int age = 18; // 整型变量
float weight = 62.5; // 浮点型变量
char sex = 'M'; // 字符型变量
  1. 复合类型变量:复合类型变量是由多个基本类型组成的变量,如数组、结构体、枚举和指针等。例如:
int arr[] = {1, 2, 3, 4, 5}; // 数组变量
struct Student{ // 结构体变量
    string name;
    int age;
    float score;
}stu;
enum Day{Mon, Tue, Wed, Thu, Fri, Sat, Sun}; // 枚举类型变量
int *p; // 指针变量

二、整形常量

C++整型常量是指程序中不可改变的整数值。它们可以用多种格式表示,包括二进制、十进制、八进制和十六进制。

以下是几个例子:

  • 十进制常量:123 (以正常数字1~9开头)
  • 八进制常量:0173 (以0开头)
  • 十六进制常量:0x7B (以0x或0X开头)
  • 二进制常量:0b123456 (以0b开头)

C++还支持前缀和后缀来表示整型常量的类型。以下是一些示例:

  • 后缀u表示unsigned类型:123u
  • 后缀l表示long类型:123l
  • 后缀ul表示unsigned long类型:123ul
  • 前缀0b表示二进制常量:0b1101
  • 前缀0表示八进制常量:0173
  • 前缀0x表示十六进制常量:0x7B

在使用整型常量时,如果超出了该类型所能表示的范围,则会出现溢出问题。例如,如果使用8位无符号整型表示256,则其值将为0,因为8位无符号整型的范围是0到255。

注意:
(1)C++不直接支持二进制的输入输出,需要bitset<>()做转换。需要包含头文件#include< bitset >才能使用,语法:

bitset<位数>(数值);
//其中,位数只能是8、16、31、64中的一个。

示例:

cout<<0b00001010<<endl;//结果为83,cout默认是输出十进制。
cout<<bitset<8>(0b00001010)<<endl;// 结果为二进制00001010

(2)std::cout默认是十进制输出,如果需要转换为八进制、十六进制输出需要加上oct、hex。
示例:

cout<<0123<<endl;//结果为83,cout默认是输出十进制。
cout<<oct<<0123<<endl;//结果为八进制的123

cout<<0xab<<endl;//结果为171,cout默认是输出十进制。
cout<<hex<<0xab<<endl;//结果为十六进制的ab

三、整形变量的定义

变量的定义形式:类型名 变量名;
例如:

int data;
// data是变量名,它的类型是int类型,在32为平台占4字节。

C++中整型变量可以通过以下方式定义:

  1. 使用关键字int
int a;
  1. 初始化变量
int b = 10;
  1. 多个变量同时定义并初始化
int c = 5, d = 6, e = 7;
  1. 使用typedef定义类型别名
typedef int myInt;
myInt f = 8;
  1. 使用宏定义
#define MYINT int
MYINT g = 9;

变量名的命名规则:字母、数值、下划线组成,不能由数字开头,不能是关键字,区分大小写。
C++对于名称的长度没有限制,名称中的所有字符都应该有意义,但有些平台有长度限制。
下面的变量命名是错误的:

int 2_num;//错误
int void;//错误

注意事项:

  • 系统会为变量开辟空间,空间大小为该变量类型的大小。
  • 变量名代表空间的内容,对变量名的操作等价于对空间的操作。

四、整型变量的初始化

在变量定义的时候给变量赋值叫初始化。

int a=10;//是初始化
int b;
b=10;//不是初始化,而是赋值。

C++整型变量可以通过以下方式进行初始化:

  1. 直接赋值:使用等号将一个整型常量或者另一个整型变量的值赋给变量。
int a = 10;
  1. 使用构造函数初始化列表:在定义对象时,可以使用构造函数的初始化列表对整型成员进行初始化。类和构造函数会在后面章节讲解,这里先做了解。
class MyClass { public: int num; MyClass() : num(0) {} };
  1. 使用花括号初始化器:在定义变量时,可以使用花括号初始化器对整型变量进行初始化。这种方式适用于C++11及以上版本。
int a{10};

全局变量如果不初始化默认是0,局部变量不初始化内容是不确定的(随机)。变量一般建议初始化为0。

全局变量和局部变量不初始化的示例:

#include <iostream>

using namespace std;

int num;

int main()
{
	int tmp;
	cout<<"tmp = "<<tmp<<endl;
	cout<<"num = "<<num<<endl;
}

输出:

tmp = 298473
num = 0

五、整型变量的声明

变量的使用:

  • 读:取值。
  • 写:赋值。

示例:

int num=0;//定义并初始化
num=100;//写操作

int data=0;//定义并初始化
data=num;//num是读操作,data是写操作
data++;// data=data+1, data先读后写

变量的声明:对变量名以及类型提前说明,不会为该变量开辟空间。
场景:先使用变量,后定义变量,必须事先对该变量进行声明。一般是在全局变量中使用,局部变量不适用。

提前声明,需要添加extern修饰。

示例:

// 提前声明,需要添加extern修饰
extern int data;
void test()
{
	// 先使用
	data=100;
	cout<<data<<endl;
}
// 后定义
int data=100;

int main()
{
	test();
	return 0;
}

变量的声明主要用于多文件编程(或者跨文件编程),使用其他源文件的变量才会去声明,上面是举例讲解什么是先声明后使用,如果是同一个文件完全没必要声明,只要定义就好。

5.1、C++ 变量的定义、变量的声明、变量的使用三者的关系

变量的定义指的是在程序中为一个变量分配内存空间,并且指定其类型和初始值。例如:

int age = 18; // 定义了一个整型变量 age,初始值为 18

变量的声明指的是在程序中声明一个变量的存在,但是不会为该变量分配内存空间,也不会初始化该变量。例如:

extern int age; // 声明了一个整型变量 age

变量的使用指的是在程序中使用已经定义或者声明的变量。例如:

cout << "My age is: " << age << endl; // 使用了之前定义或者声明的 age 变量

这三者之间的关系是:在使用一个变量之前,必须先定义或者声明该变量,否则编译器无法知道该变量的存在。同时,变量的定义一定会包含变量的声明,但是变量的声明并不一定会包含变量的定义。

六、键盘(输入设备)给变量赋值

在这里插入图片描述
使用关键字cin给变量获取键输入,cin代表输入设备。

int data=0;
cin>>data;

同时给多个变量获取键输入,每个变量的值以空格隔开。

int num;
int data;
cin>>num>>data;
cout<<"num = "<<num<<", data = "<<data<<endl;

输入:

100 200

cin可以自动跳过空格和回车(不管有多少个都会跳过),但是不能跳过其他符号。
比如,下面的输入:

100:200

输出是:

num=100, data=0

遇到不是int类型的符号则停止。

七、案例:键盘获取两个int数值然后求最大值

#include <iostream>
using namespace std;

int num;

int main()
{
	int num1=0;
	int num2 = 0;
	cout << "请输入两个int数值:";
	cin >> num1 >> num2;
	if (num1 > num2)
	{
		cout << "最大值为:" << num1 << endl;
	}
	else
	{
		cout << "最大值为:" << num2 << endl;
	}
	getchar();
	return 0;
}

输入输出:
在这里插入图片描述

总结

C++整型变量是一种用来存储整数值的数据类型。它们可以存储不同大小和范围的整数值,从最小的-2147483648到最大的2147483647。以下是一些常见的C++整数变量类型:

  1. int:这是C++中最常见的整数变量类型,其大小为4个字节,范围为-2147483648到2147483647。

  2. short:这是一个较小的整数变量类型,其大小为2个字节,范围为-32768到32767。

  3. long:这是一个较大的整数变量类型,其大小为4个字节或8个字节(取决于编译器),范围为-2147483648到2147483647或-9223372036854775808到9223372036854775807。

  4. unsigned:这是一个无符号整数变量类型,其范围从0到4294967295,它可以与其他整数变量类型配合使用。

  5. long long:这是一个非常大的整数变量类型,其大小为8个字节,范围为-9223372036854775808到9223372036854775807

除此之外,还有一些其他的整数变量类型,如char、signed char、unsigned char等,它们一般用于存储字符或字节数据。在使用整数变量类型时,需要根据实际需求选择合适的类型,以免出现数据溢出或不必要的资源浪费。

在这里插入图片描述

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

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

相关文章

win11+VS2019下配置PCL1.11.1

1、PCL安装配置 下载pcl-1.11.1-pdb-msvc2019-win64与PCL-1.11.1-AllInOne-msvc2019-win64.exe文件。以管理员身份运行PCL-1.11.1-AllInOne-msvc2019-win64.exe程序&#xff0c;截图如下&#xff1a; 安装过程中没有弹出OpenNI2的安装&#xff0c;但是要安装在3rdParty下&#…

快速了解toRaw和markRaw的用法

toRaw toRaw&#xff0c;将响应式对象&#xff08;由 reactive定义的响应式&#xff09;转换为普通对象。 作用&#xff1a;将一个由reactive生成的响应式对象转为普通对象。使用场景&#xff1a;用于读取响应式对象对应的普通对象&#xff0c;对这个普通对象的所有操作&…

mongo基本操作---文档的增删改查

4、CRUD mongo数据库和平时常见的关系型数据库一样&#xff0c;最基本的操作就是增删改查&#xff0c;唯一的区别就是叫法不一样 SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域…

韦东山Linux驱动入门实验班(1)hello驱动

前言 &#xff08;1&#xff09;学习韦东山老师的Linux&#xff0c;因为他讲的很精简&#xff0c;以至于很多人听不懂。接下来我讲介绍韦东山老师的驱动实验班的第一个Hello程序。 &#xff08;2&#xff09;注意&#xff0c;请先学习完视频再来看这个教程&#xff01;本文仅供…

AD9680+JESD204B接口+FPGA FMC高速率数据采集板卡

板卡概述&#xff1a; 【FMC_XM155】 FMC_XM155 是一款基于 VITA57.1 标准的&#xff0c;实现 2 路 14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合 ADC 同步采集 FMC 子卡模 块。 该模块遵循 VITA57.1 规范&#xff0c;可直接与 FPGA 载卡配合使用&#xff0c;板 卡 ADC 器件采用…

CIE颜色空间LCh、Lab、XYZ介绍与转换关系(包含源码)

项目场景&#xff1a; 提示&#xff1a;在颜色科学中&#xff0c;LCh和Lab是比较常用的 LCh是由MATLAB计算出的数据&#xff0c;但是我所需要在Qt的q3dsurface绘制出这个切面&#xff0c;看了Qt官方Examples&#xff0c;墨西哥草帽算法的3D模型就是由XYZ组成的。所以我需要LC…

【c语言】组件化打包—静态库

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

MacOS使用Parallels Desktop安装win11虚拟机

文章目录 前话一、安装Parallels Desktop二、安装Windows11虚拟机1.win11镜像下载2.虚拟机启动 三、创建过程问题解决1.安装win11系统的时候不显示网路2.系统安装完成后无法连接网络 三、参考文献 前话 为了让大家能快速获取到需要的内容&#xff0c;这里提前说明一下本文适用…

杂记——23.java中的值传递和应用传递

这篇文章我们来讲一下java中的值传递和引用传递 结论&#xff1a;java中只存在值传递&#xff0c;不存在引用传递&#xff08;C中有引用传递&#xff09; 分析&#xff1a; 值传递(pass by value)&#xff1a;在调用函数时&#xff0c;将实际参数复制一份传递到函数中&#…

用DevExpress WinForms富文本编辑器,集成高级文本编辑功能(二)

DevExpress WinForm富文本编辑器&#xff08;RTF编辑器&#xff09;控件允许用户将高级文本编辑功能集成到下一个WinForms项目中&#xff0c;它包括全面的文本格式选项、支持邮件合并&#xff0c;并附带了丰富的终端用户选项集&#xff0c;因此可以轻松交付受Microsoft word启发…

助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】

文章目录 数仓维度层DWS层构建01&#xff1a;项目回顾02&#xff1a;项目目标03&#xff1a;维度建模回顾&#xff1a;建模流程04&#xff1a;维度建模回顾&#xff1a;维度设计05&#xff1a;维度建模回顾&#xff1a;维度模型 数仓维度层DWS层构建 01&#xff1a;项目回顾 O…

《现代中学生》期刊简介及投稿要求

《现代中学生》期刊简介及投稿要求 《现代中学生》 主管单位&#xff1a;吉林省教育厅 主办单位&#xff1a; 吉林教育杂志社 国际刊号ISSN&#xff1a;1009-5748&#xff1b;国内刊号CN&#xff1a;22-1046/G4&#xff1b;邮发代号&#xff1a;12-52 出版周期&#xff1a…

刷题day65:整数拆分

题意描述&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。. 思路&#xff1a; 首先dp[i]代表将i拆分&#xff0c;并得到的最大乘积&#xf…

springboot+jsp高校招生宣传系统java校园网站

学校招生管理系统的用户是系统最根本使用者&#xff0c;按需要分析系统包括两类用户&#xff1a;学生、管理员。这两类用户对系统的功能简要如下。 管理员通过后台的登录页面&#xff0c;选择管理员权限后进行登录&#xff0c;管理员的权限包括招生计划管理、招生录取信息管理和…

知识变现海哥:我们不生产知识,我们只是知识的搬运工!

现在大家都在谈知识付费&#xff0c;而且有一些东西就是书本上有的&#xff0c;但被录制成视频&#xff01;加上专业的讲师去讲&#xff0c;配上PPT文档&#xff0c;然后发布出去&#xff0c;标上一定的价格后&#xff0c;就会有人去付费购买学习。 想想是不是很暴利&#xff1…

如何使用ArcGIS生成随机数

&#xff08;本文首发于“水经注GIS”公号&#xff0c;关注公号免费领取地图数据&#xff09; 在制图的过程中&#xff0c;制作某些效果需要根据字段的随机数来生成对应的颜色&#xff0c;所以需要操作字段生成随机数&#xff0c;这里为大家介绍一下ArcGIS生成随机数的方法&…

对话金现代|轻骑兵低代码开发平台,破局企业“数字化焦虑

当今世界正经历百年未有之大变局&#xff0c;大数据、云计算、区块链、人工智能等新技术飞速发展&#xff0c;越来越多的企业经营者&#xff0c;开始投入到数字化转型的浪潮中&#xff0c;期望通过数字化帮助企业实现业务增长&#xff0c;开启无限可能。但随着时间的推移&#…

基于平台视角下的数据交易模式及特点分析

基于平台视角下的数据交易模式及特点分析 陈宏民1, 熊红林1, 胥莉1&#xff0c;杨云鹏1, 卓训方2 1 上海交通大学安泰经济与管理学院&#xff0c;上海 200030 2 上海数据交易所有限公司&#xff0c;上海 201203 摘要&#xff1a;基于国内外数据交易市场的发展现状与平台思维视角…

用GDB调试cmake编译后的C++程序

文章目录 编译时添加参数用GDB运行程序参考 编译时添加参数 cmake -DCMAKE_BUILD_TYPEDebug <path and other arguments>用GDB运行程序 开始调试 start设置断点&#xff0c;这样会在运行到源码第6行时停止&#xff0c;可以查看变量的值、堆栈情况等&#xff1b;这个行…

71.建立一个轮播图组件第二部分

这节课我们通过绝对定位的方式来实现上一届未实现的内容&#xff01; ● 首先我们先设置一下button和图标 /* CONTROLS */.btn {background-color: #fff;border: none;height: 40px;width: 40px;}.btn-icon {height: 24px;width: 24px;}● 接着我们来设置绝对定位 .carousel {p…