zoukankan      html  css  js  c++  java
  • 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
    */
     
  • 相关阅读:
    JAVA窗口程序实例一
    内存容量出现异常的解决办法
    Android Studio 2.0使用指南
    Android 开机自启服务
    Android 图形总结
    今日课堂总结
    JSON
    GET方法和POST方法
    ajax的简单介绍
    网页-豌豆上的公主
  • 原文地址:https://www.cnblogs.com/huafan/p/11484978.html
Copyright © 2011-2022 走看看