【深入浅出程序设计竞赛】:变量的数据类型、常见的数据类型

122 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 17 天,点击查看活动详情

变量的数据类型

在函数体内部,如果定义了一个变量,但没有进行初始化,此时该变量就不能拿来参与计算。因此,在使用变量之前,必须给这个变量赋值(初始化)。

一般来说,赋值符号 = 右边的数据类型应该是和左边变量的数据类型是相匹配的。但有些情况下可能会不一致。

比如:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a = 10, b = 5;
    double ans = a - b;
    cout << ans; 
    return 0;
}

可以看到,上述代码中,两个整数相减(a-b)还是整数,但是赋值给了一个浮点数类型的变量 ans 。这时,就会发生自动类型转换。跨类型的自动转换可能会造成一些精度损失。比如右边是浮点数类型的变量,左边是整数类型,此时C++在自动转换时会舍去浮点数的小数部分。

常见的数据类型

常见的数据类型如下所示:

  • char:1字节,8位,取值范围在 128127-128 \sim 127 之间
  • int:4字节,32位,取值范围在 2312311-2^{31} \sim 2^{31} - 1,大约能够表示绝对值不超过 2.1×1092.1 \times 10^{9} 的整数
  • unsigned int: 4字节,32位,取值范围在 023210 \sim 2^{32}-1,大约能够表示不超过 4.2×1094.2 \times 10^9的非负整数
  • long long:8字节,64位,取值范围在 2632631-2^{63} \sim 2^{63} - 1,大约能够表示绝对值不超过 9.2×10189.2 \times 10^{18}的整数
  • unsigned long long:8字节,64位,取值范围在 026410 \sim 2^{64}-1,大约能够表示不超过 1.8×10191.8 \times 10^{19} 的非负整数
  • float:4字节,32位,大约指数绝对值不超过37,6位有效数字
  • double:8字节,64位,大约指数绝对值不超过307,15位有效数字

需要注意,数据类型默认是带符号的,即 signed,可以表示正数、负数以及0。如果在数据类型之前添加上 unsigned ,就会变成无符号数,此时只能表示正数和 0。

为了权衡精度和空间与速度,一般情况下会使用 int 数据类型来存放整数,只有当 int 无法存下一些特别大的数字时,才需要使用 long long;而浮点数如果空间有有限制,则选择 float,否则选择 double