请问C#中下面这两个代码运算次数是否一样,会被编译器优化吗?代码1:
for (int i = 0;i < 10; i++)
{
}代码2:
int a = 2;
int b = 5;
for (int i = 0; i < a * b; i++)
{
}在C++语言中是否一样?
谢谢!

解决方案 »

  1.   

    1.循环次数是死的
    2.循环次数是由a * b来决定的,每次循环都要计算一下乘积,如果在循环内部没有改变a,b的值的话,循环次数就是一致的.
      

  2.   

    这个是我也想问的,,记得在学习C++的时候 在for循环中 最好不要设计for (int i = 0;i < 10; i++)
    这样的 魔数 说是没什么实际意义.....别个看不懂 .要用变量........既然效率低下,还用变鸟 岂不很麻烦.
      

  3.   

    不是说 for (int i = 0;i < 10; i++)中,这个10引起的效率低。而是将这个10算出来的效率低因此,循环中的次数最好是个定值。在进入循环前循环次数就应该先计算出来比如:
    int count = xxList.Count;
    for(int i=0;i<count;i++) 这样写的效率是高于 for(int i=0;i<xxList.Count;i++)的
      

  4.   

    代码2:
    int a = 2;
    int b = 5;
    for (int i = 0; i < a * b; i++)
    {
    }
    ----改写成:代码2:
    int a = 2;
    int b = 5;
    int result = a*b;
    for (int i = 0; i < result ; i++)
    {
    }这样的话,效率和代码1是一样的了。
      

  5.   


    int a = 2;
    int b = 5;
    int result = a*b;
    for (int i = 0; i < result ; i++)
    {
    }这样的话,效率就是一样的了。
      

  6.   


    int a = 2;
    int b = 5;
    for (int i = 0; int length = a * b;i < length ; i++)
    {
       //循环体
    }
      

  7.   


    int a = 2;
    int b = 5;
    for (int i = 0, length = a * b;i < length ; i++)
    {
       //循环体
    }