Forzar la salida de forma
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.