tipos tipo sirve rangos que programacion para long enteros ejemplos datos dato c++ int unsigned-integer

c++ - sirve - Aplicación de la operación de módulo en un valor de tipo int y entero sin signo



tipos de variables en c++ y sus rangos (1)

cout << a% b << endl;

En la línea anterior, a se convierte a tipo sin signo (ya que usted declaró b como unsigned ) debido a las conversiones aritméticas habituales . Cuando interpreté la representación binaria de -7777 en mi máquina como valor positivo, arroja 4294959519, lo que podría explicar el resultado de 9 en su caso.

En este caso:

cout<< -7777%10 <<endl;

no se realiza ninguna promoción ya que ambos literales son de tipo int y se ve el resultado -7.

Por ejemplo, el código a continuación

int a = -7777; int b = 10; cout<< a % b<<endl; cout<<(a+b)%b<<endl; cout<< -7777%10 <<endl;

Los resultados son:

-7 -7 -7

pero si cambio el tipo de b a unsigned int, tiene diferentes valores;

int a = -7777; unsigned int b = 10; cout<< a % b<<endl; cout<<(a+b)%b<<endl; cout<< -7777%10 <<endl;

Los resutls son

9 9 -7

¿Podría algún cuerpo aconsejar cómo funciona aquí? ¿Cómo vienen las diferencias?

Por cierto: estoy usando C ++ en la última versión de Xcode.