小技巧—强制类型转换

小技巧—强制类型转换

谨以此篇,纪念CSP-S2020 T2T3挂了60pts的自己。

爆数据类型这件事,凡是学过OI的应该都有所耳闻。

那么什么时候会爆呢?总结一下。

首先,输出输入如果超过这个数据类型的最大容纳量,那就爆了。这是最显然的。可以通过给定的数据范围判断。

然后是隐晦一点的,中间过程爆。具体一些,就是中间涉及到的运算,比如乘法取模,你以为最后都模下去了,但还是爆了。

所以这里涉及到强制类型转换。

简单地说,即便你考虑到中间过程可能爆,你写的也的确是longlong或ulonglong,但是如果没有强制类型转换,你还是会爆。为什么呢?

比如(1<<64)。

这里的1是默认int,64是默认int,所以最后的答案无论多大,系统还是会默认用int来存。

这不就炸了?

所以这里要加强制类型转换,1让它变成ull,就不会炸了。

就是这样:

(1ull<<64)

即可。

原文地址:https://www.cnblogs.com/fusiwei/p/13951997.html