Forzar la salida de forma

Cuando a se define como int, siempre será un int. Mire el siguiente código:

int a =-5;

a = (unsigned) a

Según el código, suponemos que A; se convierte primero a Unsigned, pero debido a que A en sí es de tipo int, implícitamente realiza otra conversión de unsigned a int, con el resultado de que el valor de A no cambia. De hecho, echemos un vistazo a lo que es la llamada conversión de tipo: (eax a continuación es equivalente a una variable temporal):

int a =-5

mov dword; ptr [a], 0FFFFFFFBh asigna -5 a a

a = (unsigned)a;

mov eax, dword ptr[a];

mov dword ptr [a], el valor de Eax asignado a eax

De la conjetura anterior, a = (unsigned) a realizará dos operaciones y de hecho corresponderá a dos instrucciones. Pero el llamado "convertir A a sin firmar primero" significa hacer una asignación que no cambia nada, y el llamado "realizar implícitamente la conversión de unsigned a int" significa hacer una asignación que no cambia nada (el La declaración anterior se limita a dos tipos de tamaños) misma situación). Entonces su código simplemente no cumple su propósito.