目录
前言
在我们日常作oj题时,往往看到大佬定义数据类型时用long long型,那时候笔者只是认为long long型数据范围比较大,其实不然,下面就趁机总结一番吧。
一、什么是long long型
long long型是C++的64位(-9223372036854775808 ~ 9223372036854775807)整型的基本类型,占用8个字节,而int型是32位( -2147483648 ~ 2147483647),所以long long型的范围要比int型范围大得多。
二、什么时候用long long型
1.防止数据溢出
数据溢出:在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出,这种现象叫做数据溢出。
例如当我们做oj题a+b时,而a、b的数据范围是( -2147483648 ~ 2147483647),当我们用int定义a、b时,会出现溢出错误,因为显然的当a+b时,很有可能会超出int的数据范围。如下图所示:
而此时,我们只用把int型改为long long型即可
三、怎么使用long long型
在我们日常做题时,有人常常习惯于将int宏替换为long long,例如:
#define int long long // 意思是将所有的int替换为long long
这时需要把int main()改为signed main()
这样写的优缺点:
优点:防止数据溢出,比如有些题目虽然输入数据和答案都是 int 类型,但是可能在计算过程中出现了乘法或大量加法运算导致爆 int,可以稍微的偷懒。。。
缺点:1.long long容易费空间,费时MTE/TLE
2.长时间这么写,会导致思维懒惰,做题不愿意思考「这题应不应该开 long long」, 写代码也不注意变量类型等细节。
所以笔者并不是很推荐使用#define int long long
总结
总之,long long型的在我们日常算题中的应用以及相关逻辑就这些,希望对你有所帮助。