コンパイラがインデックスとイテレーションを使って反復に同等のコードを生成するかどうかを確認する方法はありますか?コードのための すなわちいくつかのテストでは、インデックスを使用してポインタと反復を使用して反復のために生成されたコードが異なるかどうかを確認しますか?
void f1(char v[])
{
for(int i=0; v[i]!=0;i++) use(v[i]);
}
と
void f1(char v[])
{
for(char *p = v; *p!=0; p++) use(*p);
}
私は私のコンパイラなどのMicrosoft Visual C++を使用......
助けてください.....
v [i]!= 0および* p!= 0は、未定義の動作を引き起こす可能性があります。配列の長さを使用して、配列の終わりを確認します。 – vrbilgi