Как лучше всего читать несколько чисел / строк в одном массиве / структуре / объединении, которое само вложено в один или несколько родительских массивов / структур / объединений?
1-й пример без временной переменной:
printf("%d %d\n", a[9][3], a[9][4]);
1-й пример с временной переменной:
int *b = a[9];
printf("%d %d\n", b[3], b[4]);
Я уверен, что временная переменная в первом примере выше довольно глупа, но во втором примере ниже она имеет смысл и выглядит лучшеиспользовать один, верно?
2-й пример без временной переменной:
foo[i]->bar.red[j][0]++;
foo[i]->bar.red[j][1]++;
foo[i]->bar.red[j][2]++;
foo[i]->bar.red[j][3]++;
2-й пример с временной переменной:
int *p = foo[i]->bar.red[j];
p[0]++;
p[1]++;
p[2]++;
p[3]++;
Так где вы рисуете линию?Я понимаю, что компиляторы достаточно умны, чтобы таким образом вставлять любую косвенную информацию, необходимую для получения сборки с оптимальной эффективностью, но (гипотетически принимая код, чрезвычайно критичный для производительности), может быть, есть исключения?И с точки зрения ясности и удобства сопровождения кода, какое у вас правило, если таковое имеется?