ADVERTENCIA: 'Los resultados de la conversión entera en truncamiento'
-
13-11-2019 - |
Pregunta
Tengo una advertencia aquí.La advertencia dice que 'Entero conversión da como resultado truncamiento'.Persiste incluso si quito la tipografía (U16).
typedef unsigned short U16;
U16 mask;
mask = ~(U16)(0x8000);
¿Cómo resuelvo esta advertencia?Utilicé el siguiente código y eliminé la advertencia, pero no está seguro de si es la forma correcta de hacerlo.
mask = (U16)(~(U32)(0x8000));
¡Gracias de antemano!
Solución
c no les gusta cuando intenta asignar valores constantes a un valor L que no es lo suficientemente grande como para mantenerlos.Supongo que los autores del compilador asumen que sabe qué valor debe usarse ya que está declarando una constante, por lo tanto, algo debe estar equivocado si está potencialmente truncando su valor.Aquí hay una solución que funcionará, pero puede que no sea su resultado ideal:
typedef unsigned short U16;
U16 mask;
mask = 0x7fff; //~0x8000;