typecasting type traduccion punteros flotante entero convertir cast c casting

traduccion - type casting c++



comparando int con size_t (3)

Es seguro siempre que el int sea ​​cero o positivo. Si es negativo, y size_t es de rango igual o mayor que int , entonces el int se convertirá en size_t y, por lo tanto, su valor negativo se convertirá en un valor positivo. Este nuevo valor positivo se compara con el valor de size_t , que puede (en una coincidencia asombrosamente improbable) dar un falso positivo. Para estar verdaderamente seguro (y tal vez excesivamente), compruebe que el int no es negativo primero:

/* given int i; size_t s; */ if (i>=0 && i == s)

y para suprimir las advertencias del compilador:

if (i>=0 && (size_t)i == s)

Si tengo una variable int y una variable size_t, ¿puedo compararlos como:

int i=1; size_t y=2; if(i==y) // do something..

o tengo que escribir uno de ellos?


Está bien comparar un valor de size_t con un valor int , el valor int se convertirá implícitamente en unsigned type.

Algunos compiladores emitirán una advertencia cuando mezcles tipos signed y unsigned en las comparaciones. En ese caso, puede convertir explícitamente el valor signed a un tipo unsigned apropiado para suprimir la advertencia.


size_t va a ser una especie de tipo entero (aunque posiblemente no esté firmado, por lo que podría generar una advertencia) por lo que se debería hacer el casting apropiado automáticamente.

Como ya han dicho otros, es posible que desee revisar cualquier cálculo que esté produciendo el int y ver si puede hacerlo en size_t en primer lugar si está calculando un tamaño requerido para algo.