This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
## $Q$:在OI中,将int 宏定义 为 long long是不是一种合理的技巧?
```c++
#define int long long //十年OI一场空,不开long long见祖宗
```
我曾经写过很长一段时间 #define int long long。先说一下这么做可能可以发挥作用的场景:有些题目虽然输入数据和答案都是 int 类型,但是可能在计算过程中出现了乘法或大量加法运算导致爆 int。并且不用担心乘法运算忘了写 1ll*。可避免程序前后类型不符。有的选手在写函数的时候,总是习惯把形参写为 int 类型,却无意中传入了 long long 类型的数据。我的一个朋友省选的时候,使用 sort 给 long long 类型数组排序时传入了一个参数都是 int 的自定义比较函数,爆零。再说一下这么做的弊端:常数大。我曾经做一道 POJ 的题目,死活 TLE,怎么卡常都 AC 不了。后来把 define 注释掉就过了。有时候会不小心 MLE。长时间这么写,会导致思维懒惰,做题不愿意思考「这题应不应该开 long long」,写代码也不注意变量类型等细节。别人读代码会很别扭。有人提到了「骗 Hack」行为,我个人认为「骗 Hack」没有太大意义。如果你的教练比较[数据删除],你可能会被教练骂。综上,不建议使用这种 define。不过如果有题目死活 WA 调不出来,可以 define 一下看看是不是溢出所导致的错误。如果是,再把 define 去掉,好好思考一下是哪里溢出了。