#define int long long 会怎么样

学术版

Penguin_Master @ 2024-11-29 07:35:27

RT,听说是 UB,但是我用了这么久好像没发现这个东西会出问题,所以它啥时候会出问题呢?


by Fur_Zes @ 2024-11-29 07:36:55

@Penguin_Master 你不用void main而是int main那他就会变成long long main


by xiezheyuan @ 2024-11-29 07:42:38

@Penguin_Master 几乎不会出问题。只是要注意:

signed main(){}

以及在用一些函数的时候要注意参数变量一致,比如 max(x, 0ll) 而不是 max(x, 0)


by SSqwq_ @ 2024-11-29 07:43:40

@Penguin_Master

  1. 要用 signed main
  2. 注意 long long 消耗的内存是 int 的两倍
  3. long long 常数可能比较大
  4. 没了,NOI Linux 2.0 下 #define int long long 虽然是 UB,但是不会出任何问题。

by qazsedcrfvgyhnujijn @ 2024-11-29 07:51:29

#define 不是本来就只是编译期进行文本替换吗,为什么是 UB 啊。(蒟蒻太菜问一下


by qazsedcrfvgyhnujijn @ 2024-11-29 07:52:56

话说我自己用的时候只要注意参数类型和内存就好了,有锅什么的编译器会报在对应位置,是不是说明 intellisence 在分析的时候直接将 define 的内容替换后分析?


by Fur_Zes @ 2024-11-29 07:55:56

哦对哦我是笨比把signed main打成void main了(


|