• 005 ++i和i++原理


    /*
    目录:
       一 代码测试
       二 汇编原理
       三 仿写函数
    */
    一 代码测试
    int main()
    {
    
        int i = 3;
        int k = 0;
        int m = 0;
    
        k = ++i;
        printf("k = %d i = %d
    ", k, i);
    
        m = i++;
        printf("m = %d i = %d", m, i);
    
        return 0;
    }
    
    /*
    // result
    k = 4 i = 4
    m = 4 i = 5
    */
    二 汇编原理
        k = ++i;
    00044E63  mov         eax,dword ptr [i]  
    00044E66  add         eax,1  
    00044E69  mov         dword ptr [i],eax  
    00044E6C  mov         ecx,dword ptr [i]  
    00044E6F  mov         dword ptr [k],ecx  
    
        m = i++;
    00044E87  mov         eax,dword ptr [i]  
    00044E8A  mov         dword ptr [m],eax  
    00044E8D  mov         ecx,dword ptr [i]  
    00044E90  add         ecx,1  
    00044E93  mov         dword ptr [i],ecx  
    三 仿写函数
    #include "stdafx.h"
    
    
    int FirstPlus(int *pInt)
    {
        *pInt = *pInt + 1;
        return *pInt;
    }
    
    int AfterPlus(int *pInt)
    {
        int nReturn = 0;
    
        nReturn = *pInt;
        *pInt = *pInt + 1;
    
        return nReturn;
    }
    
    
    int main()
    {
        int i = 3;
        int k = 0;
        int m = 0;
    
        printf("k = %d i = %d
    ", k, i);
        k = FirstPlus(&i);
        printf("k = %d i = %d
    
    ", k, i);
    
        printf("m = %d i = %d
    ", m, i);
        m = AfterPlus(&i);
        printf("m = %d i = %d", m, i);
    
        return 0;
    }
    
    /*
    // result
    k = 0 i = 3
    k = 4 i = 4
    
    m = 0 i = 4
    m = 4 i = 5
    */
     
  • 相关阅读:
    Laravel在不同的环境调用不同的配置文件
    Sphinx全文索引 第一节
    Eclipse 快捷键 (应用中自己总结)
    Ehcache计算Java对象内存大小
    计算Java对象内存大小
    HashMap
    CPU高的排查
    JVM-GC学习
    详细分析Java中断机制-转载
    GC知识记录
  • 原文地址:https://www.cnblogs.com/huafan/p/11484978.html
Copyright © 2020-2023  润新知