CC++ & Algorithm

C++整数类型 int

简单61
语言版本:C++Python
概述:int 是C++中最常用的整数类型,用来存储像1、100、-5这样的整数,就像一个小本子专门记整数。

C++的整数好朋友——int

你有没有数过班级里有多少个同学?或者计算过零花钱的金额?这些数都是整数,比如 35 个人、50 元钱。在C++里面,我们用 int 来保存整数。int 就像一个专门存放整数的“小格子”,可以存任何整数(正数、负数、零),但不能存小数或者文字。

什么是 int?

int 是英文 “integer”(整数)的缩写。声明一个 int 变量,就像在程序中划出一块小地方,专门用来放一个整数。比如:

int score = 100;        // 声明一个叫score的变量,初始值是100
int age;                // 只声明,没给值(这个格子里暂时是空的)
age = 10;               // 给age赋值10

你可以给变量取任何名字(只要符合命名规则),比如 total_moneynum_of_books,但名字最好能让人一眼看懂它用来干什么。

int 能装多大的数?

电脑里的 int 就像一个固定大小的箱子,不能无限制地装大数。在大多数电脑上,int 能装的范围是 -2147483648 到 2147483647(大约是 -21亿 到 21亿)。如果数字超出这个范围,比如要存 30亿,就会发生“溢出”,结果会变得很奇怪(比如变成负数)。所以如果你的数可能很大,比如统计全国人口,就要用更大的类型 long long(它能存到很大很大的数)。

用 int 做计算

int 类型的变量可以进行加减乘除和取余等运算。注意:两个整数相除,结果只保留整数部分(舍去小数)。比如 7/2 的结果是 3,不是 3.5。

int a = 5;
int b = 2;
int c = a + b;   // c = 7
int d = a - b;   // d = 3
int e = a * b;   // e = 10
int f = a / b;   // f = 2  (注意:不是2.5)
int g = a % b;   // g = 1  (%是取余数,5除以2余1)

生活中的例子:如果全班有 25 个同学,每 4 人一组做实验,可以分成几组?还剩几个人?

int total_students = 25;   // 总人数
int group_size = 4;        // 每组人数
int groups = total_students / group_size;   // 组数 = 25/4 = 6(取整)
int remainder = total_students % group_size; // 剩余人数 = 25%4 = 1
cout << "可以分成 " << groups << " 组,还剩 " << remainder << " 人。" << endl;

输出:可以分成 6 组,还剩 1 人。

新手容易犯的常见错误

错误1:忘记给变量赋初值

int x;
cout << x;   // 错误!x没有初始值,输出结果不确定(可能是任意数)

解决方法:声明变量时就初始化,或者在使用前赋值。

错误2:整数除法当小数用

int a = 10;
int b = 3;
double c = a / b;   // 错误!a/b 先算成3(整数除法),再转成double,结果是3.0,不是3.333...

正确做法:把其中一个数写成 double 类型,或者用强制转换:

double c = (double)a / b;   // 先转成double,再除,结果≈3.3333

错误3:超出 int 范围

int big = 2147483647;   // 这是int能装的最大正数
big = big + 1;          // 溢出!结果变成 -2147483648 (像绕回一样)

解决方法:如果数可能很大,改用 long long

错误4:用 int 存小数或文字

int price = 3.5;    // 错误!编译器可能会警告,3.5被截断成3
int name = "小明"; // 错误!不能存文字

完整示例:计算考试成绩总分和平均分

假设小明有三次考试成绩:语文85,数学92,英语78。我们用 int 算总分,并估算平均分(平均分不一定是整数,但我们可以先算整数部分)。

#include <iostream>
using namespace std;
int main() {
    int chinese = 85;    // 语文成绩
    int math = 92;       // 数学成绩
    int english = 78;    // 英语成绩
    int total = chinese + math + english;   // 总分
    int average = total / 3;                // 平均分(整数除法,只保留整数部分)
    
    cout << "总分:" << total << "分" << endl;
    cout << "整数平均分:" << average << "分" << endl;
    // 如果想得到精确平均分,需要用double类型
    double exact_avg = (double)total / 3;
    cout << "精确平均分:" << exact_avg << "分" << endl;
    return 0;
}

运行结果:

总分:255分
整数平均分:85分
精确平均分:85分

注意:这里 255/3 正好是85,所以整数除法没损失。如果总分是254,整数平均分会得到84,而精确平均分是84.6667。

相关指引

  • 如果需要存储更大的整数,比如几十亿以上,可以学习 long long 类型。
  • 如果需要小数,比如价格、身高、平均分,可以学习 floatdouble 类型。
  • 如果需要存储单个字符(比如 'A'),可以用 char 类型。
  • 如果需要存储“是/否”这样的真假值,可以用 bool 类型。

int 是C++中最常用的整数类型,记住它的用法,你就能处理很多带数字的问题啦!

例题精讲

1单选题

以下哪个选项是合法的C++ int变量声明?

Aint 2x;
Bint x2;
Cint x-2;
Dint x 2;
2单选题

已知 int a = 10, b = 3; 则表达式 a / b 的值是?

A3.333
B3
C4
D0
3判断题

int类型的变量可以用来存储像3.14这样的小数。

4判断题

在C++中,int变量可以赋值为负数,例如 int a = -10; 是正确的。

5填空题
完成以下C++程序,声明一个整型变量 score 并初始化为 95,然后输出该变量的值。
#include <iostream>
using namespace std;
int main() {
    ___;
    cout << score;
    return 0;
}