掌握核心:C++整型全方位解析

发表时间: 2024-06-29 14:07

一、常量和变量

(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默认是十进制输出,如果需要转换为八进制、十六进制输出需要加上octhex
示例:

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

三、整形变量的定义

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

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

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

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

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

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

注意事项:

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

四、整型变量的初始化

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

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

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

  1. 直接赋值:使用等号将一个整型常量或者另一个整型变量的值赋给变量。
  2. int a = 10;
  3. 使用构造函数初始化列表:在定义对象时,可以使用构造函数的初始化列表对整型成员进行初始化。类和构造函数会在后面章节讲解,这里先做了解。
  4. class MyClass { public: int num; MyClass() : num(0) {} };
  5. 使用花括号初始化器:在定义变量时,可以使用花括号初始化器对整型变量进行初始化。这种方式适用于C++11及以上版本。
  6. 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 = 298473num = 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等,它们一般用于存储字符或字节数据。在使用整数变量类型时,需要根据实际需求选择合适的类型,以免出现数据溢出或不必要的资源浪费。