sirven - punteros y matrices en c
Tipo de aritmética de puntero más eficiente en c (2)
Es poco probable que haga una diferencia significativa en el rendimiento. En cualquier caso, siempre debe utilizar el tipo que es semánticamente correcto, sin tratar de realizar optimizaciones prematuras para cosas que no van a importar. En el caso de los índices, size_t
es el tipo más pequeño que es a priori correcto, pero es posible que pueda salirse con tipos más pequeños si sabe que la matriz con la que está trabajando está limitada. Por lo general, debes usar size_t
para estar seguro.
Supongo que ocurre una conversión interna cuando escribimos: arr[i]
(que es equivalente a *(arr+i)
). Porque puedo, por ejemplo, ser una variante short
, int
o long
o sin signo de cualquiera de estos tres.
Entonces mi pregunta es simple: ¿qué tipo debería ser para que no tenga lugar una conversión interna? ¿Para que el código pueda funcionar de manera más eficiente?
Adivino crudo: size_t
?
Mi respuesta es para mantener esto simple, tal vez quieras typedef
un tipo para tu índice como tal
typedef size_t TPtrIdx;
y de esta manera puede traducir fácilmente el tipo a lo que quiera que sea, ahora o 1 año después.
En cuanto a los problemas potenciales entre las conversiones de / a los tipos firmados y no firmados, eso es algo que un buen compilador puede manejar para usted, por ejemplo, gcc
ofrece el -Wconversion
y siempre es bueno habilitarlo.