Constante entera para cantidades enteras

1. Las constantes enteras octales deben comenzar con 0, es decir, utilizar 0 como prefijo del número octal. El valor numérico es 0 ~ 7. Los números octales suelen estar sin signo.

Los siguientes números son números octales legales:

015 (13 decimal) 0101 (65 decimal) 0177777 (65535 decimal)

Los siguientes números no son legales Números octales:

256 (sin prefijo 0) 0382 (incluidos los números no octales)-0127 (aparece el signo menos)

2 Constantes enteras hexadecimales

Las constantes enteras hexadecimales tienen el prefijo 0x o 0X. Su valor numérico es 0~9, A~F o a~f.

Los siguientes números son constantes enteras hexadecimales legales:

0X2A (42 en decimal 42) 0XA0 (160 en decimal) 0x ffff (65535 en decimal)

Los siguientes números no son constantes enteras hexadecimales legales:

5A (sin prefijo 0X) 0X3H (incluidos los números no hexadecimales)

3 Constantes enteras decimales

Las constantes enteras decimales no tienen prefijo. Su número es 0 ~ 9.

Los siguientes números son constantes enteras decimales legales:

237 -568 65535 1627

Los siguientes números no son constantes enteras decimales legales:

023 (sin 0 inicial) 23D (contiene números no decimales)

En el programa, varios números decimales se distinguen según los prefijos. Por lo tanto, al escribir constantes, no utilice el prefijo incorrecto, ya que provocará resultados incorrectos. Por ejemplo, el valor inicial de la matriz int power _ of _ 10[4] = {0001, 0010, 0100, 1000} se interpretará como {1, 8, 64, 000}.

4. Sufijos de constantes enteras

En una máquina con una longitud de palabra de 16 bits, la longitud del entero básico también es de 16 bits, por lo que el rango de números representados también lo es. limitado. Las constantes enteras decimales sin signo varían de 0 a 65535, y los números con signo varían de -32768 a +32767. El rango de números octales sin signo es 0 ~ 0177777. El rango de representación de números hexadecimales sin signo es 0x0 ~ 0xffff o 0x0 ~ 0xffff. Si se utiliza un número fuera del rango anterior, debe expresarse como un número entero largo. Los números enteros largos están representados por el sufijo "l" o "l". Por ejemplo:

Constante decimal entera larga 158L (decimal 158) 358000L (decimal -358000)

Constante octal entera larga 012L (decimal 10) 077L (decimal 63) 0200000L (decimal) 65536)

Constante entera larga hexadecimal 0X15L (decimal 21) 0xA5l (decimal 165) 0x 10000 l (decimal 65536).

No existe diferencia numérica entre el entero largo 158L y la constante entera básica 158. Pero para 158L, debido a que es un número entero largo, el sistema compilador de C le asignará 4 bytes de espacio de almacenamiento. Para 158, debido a que es un número entero básico, se asignan 2 o 4 bytes de espacio de almacenamiento dependiendo de la longitud de la palabra interna de la computadora y la versión del compilador. Así que preste atención a la operación y al formato de salida para evitar errores. Para números grandes que no pueden representarse mediante enteros largos, algunos compiladores especifican que pueden representarse mediante constantes enteras de 64 bits con el sufijo "ll" o "LL". A veces, debido a necesidades especiales, es posible que se requieran anotaciones especiales para números enteros cortos. Sólo algunos compiladores admiten el sufijo "s" o "s" para enteros cortos. Los números sin signo también se pueden representar mediante sufijos. El sufijo para números sin signo de constantes enteras es "u" o "u". Por ejemplo, 358u, 0x38au y 235lu son números sin signo. Se pueden utilizar prefijos y sufijos para representar diferentes tipos de números al mismo tiempo. Por ejemplo, 0XA5Lu representa el entero largo hexadecimal sin signo A5 y su número decimal es 165.