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)常量 是在程序运行时不可更改的数据,其值在定义时就已经确定。常量可以分为字面常量和符号常量两种。
- 字面常量:字面常量是指在程序中直接使用的常量,如整数、浮点数、字符和字符串等。例如:
int a = 10; // 整数常量
float pi = 3.14; // 浮点数常量
char ch = 'A'; // 字符常量
string str = "Hello World"; // 字符串常量
- 符号常量:符号常量是指在程序中使用一个标识符来表示一个常量,这个标识符称为常量名,常量的值保存在内存中,而常量名只是一个代表该值的别名。符号常量通常用宏定义来实现。例如:
#define PI 3.1415926 // 定义符号常量PI
const int Max = 100; // 定义符号常量Max
(2)变量 是程序中会被修改值的数据,其在程序执行过程中值可以改变。变量包括基本类型变量和复合类型变量两种。
- 基本类型变量:基本类型变量是指具有简单数据类型(如整数、浮点数、字符等)的变量。例如:
int age = 18; // 整型变量
float weight = 62.5; // 浮点型变量
char sex = 'M'; // 字符型变量
- 复合类型变量:复合类型变量是由多个基本类型组成的变量,如数组、结构体、枚举和指针等。例如:
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++中整型变量可以通过以下方式定义:
- 使用关键字int
int a;
- 初始化变量
int b = 10;
- 多个变量同时定义并初始化
int c = 5, d = 6, e = 7;
- 使用typedef定义类型别名
typedef int myInt;
myInt f = 8;
- 使用宏定义
#define MYINT int
MYINT g = 9;
变量名的命名规则:字母、数值、下划线组成,不能由数字开头,不能是关键字,区分大小写。
C++对于名称的长度没有限制,名称中的所有字符都应该有意义,但有些平台有长度限制。
下面的变量命名是错误的:
int 2_num;//错误
int void;//错误
注意事项:
- 系统会为变量开辟空间,空间大小为该变量类型的大小。
- 变量名代表空间的内容,对变量名的操作等价于对空间的操作。
四、整型变量的初始化
在变量定义的时候给变量赋值叫初始化。
int a=10;//是初始化
int b;
b=10;//不是初始化,而是赋值。
C++整型变量可以通过以下方式进行初始化:
- 直接赋值:使用等号将一个整型常量或者另一个整型变量的值赋给变量。
int a = 10;
- 使用构造函数初始化列表:在定义对象时,可以使用构造函数的初始化列表对整型成员进行初始化。类和构造函数会在后面章节讲解,这里先做了解。
class MyClass { public: int num; MyClass() : num(0) {} };
- 使用花括号初始化器:在定义变量时,可以使用花括号初始化器对整型变量进行初始化。这种方式适用于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++整数变量类型:
-
int:这是C++中最常见的整数变量类型,其大小为4个字节,范围为-2147483648到2147483647。
-
short:这是一个较小的整数变量类型,其大小为2个字节,范围为-32768到32767。
-
long:这是一个较大的整数变量类型,其大小为4个字节或8个字节(取决于编译器),范围为-2147483648到2147483647或-9223372036854775808到9223372036854775807。
-
unsigned:这是一个无符号整数变量类型,其范围从0到4294967295,它可以与其他整数变量类型配合使用。
-
long long:这是一个非常大的整数变量类型,其大小为8个字节,范围为-9223372036854775808到9223372036854775807
除此之外,还有一些其他的整数变量类型,如char、signed char、unsigned char等,它们一般用于存储字符或字节数据。在使用整数变量类型时,需要根据实际需求选择合适的类型,以免出现数据溢出或不必要的资源浪费。