zoukankan      html  css  js  c++  java
  • 流程控制for循环

    #include "stdafx.h"
    
    int main(int argc, char* argv[])
    {
    	int sum=0;
    	for (int i=0;i<=100;i++)
    	{
    		sum=sum+i;
    	}
    	printf("sum=%d\n",sum);
    	return 0;
    }
    

      这是一个求1+2+3+...+100的和的过程。

    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      signed int v3; // eax@1
      int v4; // ecx@1
    
      v4 = 0;
      v3 = 0;
      do
        v4 += v3++;
      while ( v3 <= 100 );
      printf("sum=%d\n", v4);
      return 0;
    }
    

      我们看到,for循环被修改成了do-while循环,我们修改一下:

    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      signed int i; // eax@1
      int sum; // ecx@1
    
      sum = 0;
      i = 0;
      do
        sum += i++;
      while ( i <= 100 );
      printf("sum=%d\n", sum);
      return 0;
    }
    

      这里在把

    sum += i++;
    

     修改下:

    sum+=i;
    i++;
    

     即

    sum=sum+i;
    i++;
    

    我把它放到编译器里面在运行一次。

    #include "stdafx.h"
    
    int main(int argc, char* argv[])
    {
    	signed int i;
    	int sum; 
    	
    	sum = 0;
    	i = 0;
    	do
    	{
    		sum=sum+i;
    		i++;
    	}
    	while ( i <= 100 );
    	printf("sum=%d\n", sum);
    	return 0;
    

     其实我们更应该看的是反汇编代码,而不是IDA“翻译”后的代码。

  • 相关阅读:
    TSQL 基础学习 04
    第13章 网络编程
    Oracle 第一天
    第11章 进程与多线程
    Linux 第06天
    构造Json对象串工具类
    第14章 数据库
    第07章 集合
    YARNMR 大数据第二天
    第12章 多媒体
  • 原文地址:https://www.cnblogs.com/tk091/p/2508245.html
Copyright © 2011-2022 走看看