Jak w temacie..
int temp=tab[y][x];
if(objects[temp].test==1)
{
functi(objects[temp].test_id);
}
czy
if(objects[tab[y][x]].test==1)
{
functi(objects[tab[y][x]].test_id);
}
Jak w temacie..
int temp=tab[y][x];
if(objects[temp].test==1)
{
functi(objects[temp].test_id);
}
czy
if(objects[tab[y][x]].test==1)
{
functi(objects[tab[y][x]].test_id);
}
Zależy od kompilatora. O ile nie używasz jakiegoś Borlanda czy nie wyłączyłeś optymalizacji, obie konstrukcje powinny dać ten sam efekt.
2 opcjs
MinGW którego dorzucają do Code::Blocks 10.05, na ustawieniach "podstawowych"
Jeżeli to jest w ciasnej pętli to przetestuj obydwie konstrukcje i jak jest różnica, to użyj szybszej. Jak nie to użyj czytelniejszej.
Jak szaleć to szaleć!
KlasaObiektu *p = &objects[tab[x][y]];
if (p->test == 1)
functi(p->test_id);
Wydaje mi się, że operacja podwójnego przesunięcia wskaźnika ukryta pod tab[x][y] wykonywana jest na tyle szybko, iż zaprzątanie sobie uwagi taką drobnostką przyniesie wzrost wydajności w granicach niepewności pomiaru. ;)
Skompiluj do assemblera i porównaj. Z -O2
pewnie będzie to samo.