2010-03-07 10 views

Respuesta

6

El u es unsigned, es decir: 1 es el valor int 1, y 1u es el unsigned int valor 1.

+2

Y el efecto de que en este caso es que si 'rev3 [gx]' es un int, y por lo tanto podría ser negativo, que se convertirá en 'unsigned' antes de ser dividido por 193. En mi máquina' (int) (- 1/193) 'es 0, mientras que' (int) (- 1/193U) 'es 22253716. Pero si' rev3 [gx] 'es un entero con signo tipo * más grande * que int, entonces la U no hace diferencia en el resultado: '(-1LL/193U) == (-1LL/193)', ambos son de tipo largo. Tengo que amarlos reglas enteras de promoción. –

2

Esto significa que es una constante de unsigned int. Es una forma de decirle al compilador que use un tipo específico para una constante donde de otro modo no conocería el tipo. Un 193 desnudo sería tratado como un int normalmente.

Es similar al sufijo L para , ULL para unsigned long long y así sucesivamente.

3

Esto significa que el número es un unsigned int, que es un tipo de datos al igual que un int excepto que no tiene valores negativos, lo cual es una solución de compromiso que hace para que pueda almacenar valores más grandes (dos veces más grandes que un int normal).

0

que significa tratar el valor como un valor sin signo

Cuestiones relacionadas