mathe 发表于 2010-3-18 09:45:22

应该是历史原因。

gxqcn 发表于 2010-3-18 09:51:36

晚上我回去查查经典,看看会不会有什么说法。

qianyb 发表于 2010-3-18 10:50:00

定标准的人不同呗

〇〇 发表于 2010-3-30 18:58:24

编译器奇怪的地方很多
gcc /02能运行cl /02就非法操作

      adsmkeyh(8);

      adsmkeyh(4);

      adsmkeyh(2);

      adsmkeyh(1);


for(i=1;i<7;i++)
{
if (i==1)      //循环开始时有
for(iterh=key_recn2h.begin();iterh != key_recn2h.end(); iterh++)
{
      addsmkeyh(3);

      addsmkeyh(9);

      addsmkeyh(5);

}
if(i==2)      //循环开始时有
for(iterh=key_recn2h.begin();iterh != key_recn2h.end(); iterh++)
{
      addsmkeyh(10);
}
if(i==4)      //循环开始时有
for(iterh=key_recn2h.begin();iterh != key_recn2h.end(); iterh++)
{
      addsmkeyh(6);

      addsmkeyh(12);
}
if(i==3)      //循环开始时没有,在i=1计算完后有
for(iterh=key_recn2h.begin();iterh != key_recn2h.end(); iterh++)
{
      addsmkeyh(11);

      addsmkeyh(7);

      addsmkeyh(15);
      
}
if(i==5)      //循环开始时没有,在i=1计算完后有
for(iterh=key_recn2h.begin();iterh != key_recn2h.end(); iterh++)
{
      addsmkeyh(13);
}
if(i==6)      //循环开始时没有,在i=4计算完后有
for(iterh=key_recn2h.begin();iterh != key_recn2h.end(); iterh++)
{
      addsmkeyh(14);
}
}

改成下面这样,所有计算在循环开始时都有了
for(i=1;i<7;i++)
{
if (i==1)      
for(iterh=key_recn2h.begin();iterh != key_recn2h.end(); iterh++)
{
      addsmkeyh(3);

      addsmkeyh(9);

      addsmkeyh(5);

      addsmkeyh(11);

      addsmkeyh(7);

      addsmkeyh(15);

      addsmkeyh(13);
}
if(i==2)
for(iterh=key_recn2h.begin();iterh != key_recn2h.end(); iterh++)
{
      addsmkeyh(10);
}
if(i==4)
for(iterh=key_recn2h.begin();iterh != key_recn2h.end(); iterh++)
{
      addsmkeyh(6);

      addsmkeyh(14);

      addsmkeyh(12);
}
}
页: 1 [2]
查看完整版本: 奇特的编译 error: C2016