实验:(++i)+(++i)+(++i) 与 (i++)+(i++)+(i++)

来源:互联网 发布:淘宝点和我联系没反应 编辑:程序博客网 时间:2024/06/10 06:21

             实验:(++i)+(++i)+(++i) (i++)+(i++)+(i++)

1.实验目标:通过实验得出影响(++i)+(++i)+(++i)(i++)+(i++)+(i++)计算结果的主要因素

2.实验方法:在两套不同的硬件平台 ( Inter平台和AMD平台 ) 上测试3种编译器 (VC++6.0                     TURBO C 2.0    JAVA 2 Platform JDK) 的运算结果

 

第一部分: AMD平台下的测试

 

代码一:

#include <stdio.h>

void main()

{

    int i = 3,sum;

    sum = (++i)+(++i)+(++i);  

    printf("i = %d , sum = %d /n",i,sum);

}

 

实验环境1: AMD Athlon64 2800+ (754Pin)

            Windows Vista Ultimate (32bit)

            Virsual C++ 6.0 Enterprise (SP6)

运行结果:   i = 6 , sum = 16

Disassembly Code:

0040107F  mov        eax,dword ptr [ebp-4]

00401082  add        eax,1

00401085  mov        dword ptr [ebp-4],eax

00401088  mov        ecx,dword ptr [ebp-4]

0040108B  add        ecx,1

0040108E  mov        dword ptr [ebp-4],ecx

00401091  mov        edx,dword ptr [ebp-4]

00401094  add        edx,dword ptr [ebp-4]

00401097  mov        eax,dword ptr [ebp-4]

0040109A  add        eax,1

0040109D  mov        dword ptr [ebp-4],eax

004010A0  add        edx,dword ptr [ebp-4]

004010A3  mov        dword ptr [ebp-8],edx

 

 

实验环境2: AMD Athlon64 2800+ (754Pin)

            Windows Vista Ultimate (32bit)

            Borland Turbo C 2.0

运行结果:  i = 6 , sum = 18

 

 

实验环境3: AMD Athlon64 2800+ (754Pin)

            Windows Vista Ultimate (32bit)

            JAVA Development Kit 1.6.0_03

JAVA类似代码:

          public class Test

  {

                           public static void main(String[] args)

                            {

                                          int i = 3,sum;

                               sum = (++i)+(++i)+(++i);

                                          System.out.println("i = "+i+" , sum = "+sum);

                            }

  }

运行结果:  i = 6 , sum = 15

 

 

 

 

 

代码二:

#include <stdio.h>

void main()

{

   int i = 3,sum;

    sum = (i++)+(i++)+(i++);  

    printf("i = %d , sum = %d /n",i,sum);

}

 

实验环境1: AMD Athlon64 2800+ (754Pin)

            Windows Vista Ultimate (32bit)

            Virsual C++ 6.0 Enterprise (SP6)

运行结果:  i = 6 , sum = 9

Disassembly Code:

0040107F  mov        eax,dword ptr [ebp-4]

00401082  add        eax,dword ptr [ebp-4]

00401085  add        eax,dword ptr [ebp-4]

00401088  mov        dword ptr [ebp-8],eax

0040108B  mov        ecx,dword ptr [ebp-4]

0040108E  add        ecx,1

00401091  mov        dword ptr [ebp-4],ecx

00401094  mov        edx,dword ptr [ebp-4]

00401097  add        edx,1

0040109A  mov        dword ptr [ebp-4],edx

0040109D  mov        eax,dword ptr [ebp-4]

004010A0  add        eax,1

004010A3  mov        dword ptr [ebp-4],eax

 

 

实验环境2: AMD Athlon64 2800+ (754Pin)

            Windows Vista Ultimate (32bit)

            Borland Turbo C 2.0

运行结果:   i = 6 , sum = 9

 

 

实验环境3: AMD Athlon64 2800+ (754Pin)

            Windows Vista Ultimate (32bit)

            JAVA Development Kit 1.6.0_03

JAVA类似代码:

          public class Test

  {

                           public static void main(String[] args)

                            {

                                          int i = 3,sum;

                               sum = (i++)+(i++)+(i++);

                                          System.out.println("i = "+i+" , sum = "+sum);

                            }

  }

运行结果:  i = 6 , sum = 12

 

 

 

 

 

第二部分: Intel平台下的测试

 

代码一:

#include <stdio.h>

void main()

{

    int i = 3,sum;

    sum = (++i)+(++i)+(++i);  

    printf("i = %d , sum = %d /n",i,sum);

}

 

实验环境1: Inter Celeron 331(2.66Hz,LGA775,90nm)

            Windows Server 2003 Enterprise Edition (32bit)

            Virsual C++ 6.0 Enterprise (SP6)

运行结果:   i = 6 , sum = 16

Disassembly Code:

0040102F   mov         eax,dword ptr [ebp-4]

00401032   add         eax,1

00401035   mov         dword ptr [ebp-4],eax

00401038   mov         ecx,dword ptr [ebp-4]

0040103B   add         ecx,1

0040103E   mov         dword ptr [ebp-4],ecx

00401041   mov         edx,dword ptr [ebp-4]

00401044   add         edx,dword ptr [ebp-4]

00401047   mov         eax,dword ptr [ebp-4]

0040104A   add         eax,1

0040104D   mov         dword ptr [ebp-4],eax

00401050   add         edx,dword ptr [ebp-4]

00401053   mov         dword ptr [ebp-8],edx

 

实验环境2: Inter Celeron 331(2.66Hz,LGA775,90nm)

            Windows Server 2003 Enterprise Edition (32bit)

            Borland Turbo C 2.0

运行结果:  i = 6 , sum = 18

 

 

实验环境3: Inter Celeron 331(2.66Hz,LGA775,90nm)

            Windows Server 2003 Enterprise Edition (32bit)

            JAVA Development Kit 1.6.0_03

JAVA类似代码:

          public class Test

  {

                           public static void main(String[] args)

                            {

                                          int i = 3,sum;

                               sum = (++i)+(++i)+(++i);

                                          System.out.println("i = "+i+" , sum = "+sum);

                            }

  }

运行结果:  i = 6 , sum = 15

 

 

 

 

 

代码二:

#include <stdio.h>

void main()

{

   int i = 3,sum;

    sum = (i++)+(i++)+(i++);  

    printf("i = %d , sum = %d /n",i,sum);

}

 

实验环境1: Inter Celeron 331(2.66Hz,LGA775,90nm)

            Windows Server 2003 Enterprise Edition (32bit)

            Virsual C++ 6.0 Enterprise (SP6)

运行结果:  i = 6 , sum = 9

Disassembly Code:

0040102F   mov         eax,dword ptr [ebp-4]

00401032   add         eax,dword ptr [ebp-4]

00401035   add         eax,dword ptr [ebp-4]

00401038   mov         dword ptr [ebp-8],eax

0040103B   mov         ecx,dword ptr [ebp-4]

0040103E   add         ecx,1

00401041   mov         dword ptr [ebp-4],ecx

00401044   mov         edx,dword ptr [ebp-4]

00401047   add         edx,1

0040104A   mov         dword ptr [ebp-4],edx

0040104D   mov         eax,dword ptr [ebp-4]

00401050   add         eax,1

00401053   mov         dword ptr [ebp-4],eax

 

 

实验环境2: Inter Celeron 331(2.66Hz,LGA775,90nm)

            Windows Server 2003 Enterprise Edition (32bit)

            Borland Turbo C 2.0

运行结果:   i = 6 , sum = 9

 

 

实验环境3:Inter Celeron 331(2.66Hz,LGA775,90nm)

           Windows Server 2003 Enterprise Edition (32bit)

           JAVA Development Kit 1.5.0_04

JAVA类似代码:

          public class Test

  {

                           public static void main(String[] args)

                            {

                                          int i = 3,sum;

                               sum = (i++)+(i++)+(i++);

                                          System.out.println("i = "+i+" , sum = "+sum);

                            }

  }

运行结果:  i = 6 , sum = 12