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!

¿Fue útil?

Solución

Los compiladores de

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;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top