¿Es -5
un entero literal? ¿O es 5
un literal, y -5
es una expresión con menos unary tomando un literal como argumento? La pregunta surgió cuando me preguntaba cómo codificar los valores enteros más pequeños con signo.¿Es -5 un entero literal?
Respuesta
Es un signo menos unitario seguido de 5 como un entero literal. Sí, eso hace que sea algo difícil representar el número entero más pequeño posible en el complemento de dos.
@Jerry Coffin: Si los tipos 'long' y 'unsigned long' son 32 bits, ¿consideraría un compilador conforme a las normas -2147483648 como un unsigned long igual a 2147483648, un error o Comportamiento indefinido? – supercat
@supercat: en C++ no está definido, pero luego en C++ con los tamaños que especifique, '2147483648' no está definido (2.13.1/2) - usted * debe * proporcionar un sufijo' 2147483648u' u obtener ayuda de su implementación. Esperarías que el compilador te haga un favor, y trates '2147483648' como unsigned long, o quizás' long long' si es compatible, o un error si todo lo demás falla: pero no tiene por qué hacerlo. En C99 (nuevamente con esos tamaños), '-2147483648' es un negativo' long long'. Creo que en C89 es un 'unsigned long', lo que causa un final de entretenimiento al migrar de una a otra. –
En C99 con 'int' de 32 bits,' -2147483648' tiene tipo 'unsigned int' y su valor es 2147483648. No hay ninguna razón por la que se convertiría en' long long' porque 2147483648 encaja en 'unsigned int', y luego el se le aplica un operador de negación unario. –
Como Jerry Coffin said, el signo menos no es parte del literal. En cuanto a la forma de resolver su última pregunta,
Me preguntaba cómo codificar más pequeño entero con signo valora
Eso es lo que INT_MIN
(y similares en limits.h
o stdint.h
o donde sea) es para.
Si observa cómo se define INT_MIN
, probablemente se parezca a (-2147483647 - 1)
para solucionar el problema planteado por la pregunta.
Gracias. Ya lo hice. En realidad, no me estoy encontrando con ningún problema. Me preguntaba :)) –
@Armen: Entendido. Supongo que debería decir "el problema planteado por la pregunta" entonces. –
¿Puede decirme qué tipo tiene '-1' y qué tipo tiene' 1' ..? Sé que esta es una pregunta básica, pero estoy teniendo una confusión con respecto a esto. –
- 1. ¿Por qué un literal entero seguido de un punto es un literal numérico válido en JavaScript?
- 2. ¿El literal entero es un objeto en Python?
- 3. ¿Qué significa "L" al final de un literal entero?
- 4. ¿Por qué es ambiguo invocar ambig (long) y ambig (unsigned long) sobrecargados con un literal entero?
- 5. Aritmética de enteros en Java con char y entero literal
- 6. ¿Es posible envolver un entero y llamarlo como un entero?
- 7. @YES literal no trabajan en IOS 5/Xcode 4.4
- 8. ¿Cómo puedo generar un entero a partir de un literal de cadena en tiempo de compilación?
- 9. Cómo proporcionar ECMAScript 5 (ES 5) -shim?
- 10. es entero Inmutable
- 11. Cómo ordenar un objeto JS Literal?
- 12. ¿Qué es intptr_t, es un tipo para entero o puntero?
- 13. ¿Qué es un literal de clase en Java?
- 14. un entero
- 15. ¿Qué es una función literal en Scala?
- 16. Java: Entero es igual a ==
- 17. ¿Cómo detectar si un número dado es un número entero?
- 18. Determinar si un valor es un número entero en Python
- 19. Python: prueba si un argumento es un número entero
- 20. Is Array (5) es equivalente a var a = []; a.length = 5; en JS?
- 21. Agregar un prototipo a un objeto literal
- 22. sed replace literal TAB
- 23. Escapar un apóstrofo en un carácter literal
- 24. Cómo escribir un literal int corto sin signo?
- 25. ¿Por qué Count no es un entero sin signo?
- 26. Bash: Probando si una variable es un número entero
- 27. ¿Cómo puedo verificar si un entero con signo es positivo?
- 28. ¿Es seguro asumir que un servidor tendría PHP 5?
- 29. ¿Cómo puedo saber si un entero Java es nulo?
- 30. Compruebe si un entero es una potencia entera de otro
¿Qué hay de INT_MIN de para "número entero con signo más pequeño"? –
Arun
O, como está etiquetado C++, ¿qué tal 'std :: numeric_limits :: min()'? –
Praetorian
Miré en los climas. #define INT_MIN (-2147483647 - 1) Interesante :) Gracias –