OI常识(持续更新)

避坑

Posted by tofucurd on March 16, 2022

关于换行符

Windows:\r\n(ASCII:13,10)

macOS/Unix/Linux:\n(ASCII:10)

是什么是由在哪里造而决定的,而不是在哪里运行

关于EOF

EOF=-1

关于读字符

scanf("%c",&ch)ch=getchar()等价

关于cstring

strlen是$O(n)$的

关于floyd

i,j,k的顺序跑三遍是对的

关于if-else

1
2
if(expr_a)if(expr_b)expr_c
else expr_d

上述代码中,expr_d是接在expr_a后的。

关于增大栈空间

Windows:"-Wl,--stack=<size>"

Linux:"-Wl,-z,stack-size=<size>"

macOS:"-Wl,-stack_size,<size>"

解释:-Wl意为此后跟着的为传给链接器的参数,由于不同平台下链接器不同,所以命令也不一样。

另外macOS下使用ulimit -s <size>无效。

关于sanitizer

作用:查RE

用法:"-fsanitize=address,undefined,leak"

Linux下g++支持AddressSanitizer,UBSanitizer,LeakSanitizer

macOS下apple clang支持AddressSanitizer,UBSanitizer,homebrew g++不支持

windows下clang支持AddressSanitizer,UBSanitizer,LeakSanitizer,MinGW不支持