这么经典的问题该被收进FAQ(如果有的话)里了...
__int64是win平台下才有的,但是long long类型是win/linux平台下都可以用的.
但是long long类型C风格读写的时候有I64d和lld的麻烦... 于是最后有这么一个解决方案
在程序的开头加上这样的预处理语句
#ifdef unix
#define LLD "%lld"
#else
#define LLD "%I64d"
#endif
然后scanf(LLD,&a),printf(LLD LLD"\n",a,b);这样用就可以了.
利用了linux平台下有unix宏的特性,实现了(通常情况下的)通杀.
但是偏偏有一个地方用不了...
—Codeforces!
他是win平台下的,而且很贴心.
为什么说贴心呢?
因为他一旦发现你的程序里面出现"%lld"就会阻止你提交!
所以尽管这个做法很不错但是仍然会被误认为是在犯傻...
这时候只留一行#define LLD "%I64d"就可以了.