代码小技巧(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
  • 卡常

    • swap(a,b){ a^=b^=a^=b; }
    • ++ii++
    • 无脑 inline ,编译器会帮你决定。
    • 加法取模不要用
      a%=b
      写一个
      inline void mo(int& x){if(x >= mod)x -= mod;}
posted @ 2022-05-12 22:40  Xu_brezza  阅读(136)  评论(1编辑  收藏  举报