代码小技巧(memset,卡常等)
本博客持续更新
什么时候更新?当然是我想起来了。
-
memset技巧
- (upd on 2022.6.22)前置大大大大大大大大坑:如果你的负无穷开成了太小的,而你还会出现负无穷加负无穷的情况,那么你就会,得到正无穷,这种情况建议采用
0xcf
来得到小点的负无穷。正无穷目前没出现这种情况?但还是能用0x3f
就别碰0x7f
,会让你变得不幸。 -
int: //0xf 252645135 //0x1f 522133279 //0x2f 791621423 //0x3f 1061109567 //0x4f 1330597711 //0x5f 1600085855 //0x6f 1869573999 //0x7f 2139062143 //0x8f -1886417009 //0x9f -1616928865
- 综上,int 范围内
正无穷 0x7f
负无穷 0x8f
-
long long: //0xf 1085102592571150095 //0x1f 2242545357980376863 //0x2f 3399988123389603631 //0x3f 4557430888798830399 //0x4f 5714873654208057167 //0x5f 6872316419617283935 //0x6f 8029759185026510703 //0x7f 9187201950435737471 //0x8f -8102099357864587377 //0x9f -6944656592455360609
- 综上,long long 范围内
正无穷 0x7f
负无穷 0x8f
-
double: //120 206842847014058096440037358038466304347788326223541487606317616805731077748516480015147720668990093429989789323795015372524252437969121830711381536410443614560910162130612512879753850514435995110401299869670616222273923702568844587949265901663861586532160258987542282502144.000000
- 综上,double
正无穷 120
- (upd on 2022.6.22)前置大大大大大大大大坑:如果你的负无穷开成了太小的,而你还会出现负无穷加负无穷的情况,那么你就会,得到正无穷,这种情况建议采用
-
卡常
swap(a,b){ a^=b^=a^=b; }
++i
比i++
快- 无脑
inline
,编译器会帮你决定。 - 加法取模不要用
a%=b
写一个
inline void mo(int& x){if(x >= mod)x -= mod;}