社区讨论

cstdint 你的跨平台~

学术版参与者 12已保存回复 16

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
16 条
当前快照
1 份
快照标识符
@mlivg47u
此快照首次捕获于
2026/02/12 11:00
上周
此快照最后确认于
2026/02/14 16:15
5 天前
查看原帖
如果你使用 int64_t 代替 long long,你会惊喜的发现如下代码 CE 了:
CPP
int64_t a = 114514;
a = max(0ll, a - b);
并且你本地很可能非常正常。原因在于,Linux 下 long 类型(long int 与 unsigned long int)都是 64 位的,而 win 下这些是 32 位的(bitset 里有同样的坑)。int64_t 在 Linux 的某些标准库实现中可能被 define 为了 long int,而 0ll 的类型是 long long,会变成 long long int,这样就会模板实例化失败。
这个设计一方面是 Windows 和 Linux 系统设计的不统一,另一方面是 max 函数设计的缺陷。
总之小心这个东西在正赛里爆炸。

回复

16 条回复,欢迎继续交流。

正在加载回复...