纯萌新,问一下int和long int的区别

B2001 入门测试题目

**对于 100 % 的数据,输入的整数在 [ 1 , 4 × 10 18 ] 内。** int 最大是2的31次方-1,存都存不下
by lihaoyu114514 @ 2024-07-20 00:38:15


1. C/C++ 的整数类型名称可以简写省略 `int`(单个 `int` 除外)。例如 `signed int` 可以简写成 `signed`,`long long int` 可以简写成 `long long`。 2. C/C++ 中要求 `long` 的字节数必须不能少于 `int`,具体是几字节由编译环境等决定。 3. 我们往往看到:Windows 系统(64 位)上 `long` 是 $4$ 字节,和 `int` 大小一样;而 Linux 系统(64 位) 上 `long` 是 $8$ 字节,和 `long long` 大小($8$ 字节)一样;32 位 Windows、Linux 系统中 `long` 都是 $4$ 字节,和 `int` 一样。 4. 现在,洛谷评测机环境中各个 C/C++ 相关选项对应的评测机环境都是 Linux 系统(64 位),所以在洛谷评测情况下,`long` 相当于 `long long` 的大小,均为 $8$ 字节;猜测楼主测试时用的系统是 Windows 系统,不管是 64 位还是 32 位系统,`long` 都是 $4$ 字节,所以楼主本地测试时不会发现 `long` 和 `int` 的区别。 5. 本题输入整数范围是 $[1,4\times 10^{18}]$(应该有一组和上界差不了太多的输入数据),两数之和最大为 $8\times 10^{18}$,洛谷环境中 $8$ 字节数的直接表示范围为 $[-2^{8\times 8},2^{8\times 8}-1]$ 约为 $[-9.22^{18},9.22^{18}]$,所以这个数可以直接由 `long long`/`long` 表示。 6. 既然 `long` 型和 `long long` 型在洛谷评测机中大小一样,为什么往往用 `long long` 而非 `long`?这是因为以往决定选手生涯的比赛采用的评测机一直是 $32$ 位机器,`long` 型是 $4$ 字节的,而 `long long` 才是 $8$ 字节的,所以遗留下来的程序都是采用 `long long` 来书写的。此外由于 `long long` 在更广泛的情况下都是 $8$ 字节,用起来字节数是明确的,特别是很多人本地测试时 `long` 不是 $8$ 字节的,这个差异就让大家会尽可能用 `long long` 而非 `long`,否则可能会出现一些令人头疼的事情。 7. `long` 可以在洛谷举办 [Code Golf](https://code.golf/) 类似的比拼(论谁代码字节数最小)的时候代替 `long long` 使用,可以节省少则 $5$ 个字节,同样地 `printf("%ld",x)` 也可以代替 `printf("%lld",x)` 使用。 --- 常见系统情况下各整数类型的字节数如下表: | | linux 64 | windows 64 | linux 32 | windows 32 | | :----------: | :----------: | :----------: | :----------: | :----------: | | char | $1$ | $1$ | $1$ | $1$ | | short | $2$ | $2$ | $2$ | $2$ | | int | $4$ | $4$ | $4$ | $4$ | | long | $\color{red}8$ | 4 | 4 | 4 | | long long | 8 | 8 | 8 | 8 | | size_t | 8 | 8 | 4 | 4 | **注**:只是往往如此,不是总是如此。 --- 具体字节数可以用以下程序进行测试: ```c #include<stdio.h> int main(){ printf("%d %d %d",(int)(sizeof(int)), (int)(sizeof(long)),(int)(sizeof(long long))); return 0; } ``` [洛谷 IDE](https://www.luogu.com.cn/ide) 中输出为 ~~~ 4 8 8 ~~~
by Terrible @ 2024-07-20 05:14:16


大.....大佬
by gf123456 @ 2024-08-13 15:57:48


所以以后就不用管long int了,直接long long就好咯。 一般空间不会卡那么死的,long long非常好。
by Atlantic_C929 @ 2024-08-14 15:03:47


|