zoukankan      html  css  js  c++  java
  • C/C++编程锦集

    记录C/C++中易混淆生僻的编程语法

    1. 

     
    int i = 0xAA;
    i ^= 0x0F - 0x0F;  //  相当于:i ^= (0x0F - 0x0F);,计算得:i=0xAA
    //  若是(i ^= 0x0F) - 0x0F;,计算得150 

     

    2.

     
    long long m = 0x10000;
    int n = 0x10000;
    //    计算中间临时结果为8Byte,没溢出
    double r1 = m * n;     //  r1 = 0x100000000;
    long long r2 = m * n;  //  r2 = 0x100000000;  sizeof(long long) = 8

    int m = 0x10000;
    int n = 0x10000;
    //  计算中间临时结果默认为4Byte,导致溢出。
    double r1 = m * n;     //  r1 = 0;
    long long r2 = m * n;  //  r2 = 0;

    char c1 = 0x70;
    char c2 = 0x70;
    //  计算中间临时结果默认为4Byte,没溢出。
    int cc = c1 * c2;  //  cc = 0x3100

      

     3.  移位操作符(左移<<或右移>>)的操作数必须是整数。取余运算符(%)的操作数必须是整数。

    int i1 = 0x1000;
    int i2 = -0x1000;
    int i3 = 0x1000;
    int i4 = -0x1000;

    while (1)
    {
        i1 = i1 << 1;  //  溢出先变为最大负值,再变为0
        i2 = i2 << 1;  //  溢出变为0

        i3 = i3 >> 1;  //  溢出后为0
        i4 = i4 >> 1;  //  溢出后为-1,一直是-1
    }
    4. Int最大最小值 :
    #include <stdio.h>

    int main()
    {
        printf("max int = %d ",   int(  (unsigned int)(~0) >> 1)  );
        printf("min int = %d ",   int(~((unsigned int)(~0) >> 1)) );
    }
     

     5. 数组指针.

     char a[10] = {0};

    int len = sizeof(a);  //  len = 10
    a ++;                 //  错误,a为常量
     


  • 相关阅读:
    本地项目上传至GitHub
    博客园上传markdown格式文章
    Spring boot快速入门
    洛谷P1279 字串距离
    洛谷P2758 编辑距离
    POJ 堆栈基本操作
    洛谷P2815 IPv6地址压缩
    喵的Unity游戏开发之路
    喵的Unity游戏开发之路
    喵的Unity游戏开发之路
  • 原文地址:https://www.cnblogs.com/ant-wjf/p/3450822.html
Copyright © 2011-2022 走看看