Pregunta muy básica: ¿cómo escribo un short
literal en C ++?
Yo se lo siguiente:
2
es unint
2U
es ununsigned int
2L
es unlong
2LL
es unlong long
2.0f
es unfloat
2.0
es undouble
'\2'
es unchar
.
Pero, ¿cómo escribiría un short
literal? Lo intenté, 2S
pero eso da una advertencia del compilador.
Respuestas:
Sí, no es estrictamente un literal corto, más bien un int casted, pero el comportamiento es el mismo y creo que no hay una forma directa de hacerlo.
A continuación se muestra cuánto debería preocuparse por esto:
Compilar -> desmontar ->
fuente
short foo = 1; foo += (short)2;
. Pero esto no se puede eludir debido a la promoción de números enteros.C ++ 11 le ofrece bastante cerca de lo que desea. (Busque "literales definidos por el usuario" para obtener más información).
fuente
short
físicamente no puede serstd::uint
nada, ya que es un tipo firmado. Y no se requiere que sea de 16 bits o del mismo tipo que unstd::int16_t
... que en sí mismo ni siquiera se requiere que exista en una implementación dada si la plataforma no puede suministrar el tipo de ancho exacto. La idea central de esta respuesta es buena, pero está devaluada por la tangente inexplicable en tipos no relacionados sobre los que el OP no preguntó.short
según lo solicitó OP.Incluso los escritores del estándar C99 quedaron atrapados por esto. Este es un fragmento de la
stdint.h
implementación de dominio público de Danny Smith :fuente
Si usa Microsoft Visual C ++, hay sufijos literales disponibles para cada tipo de entero:
Tenga en cuenta que se trata de una extensión no estándar y no es portátil . De hecho, ni siquiera pude encontrar información sobre estos sufijos en MSDN.
fuente
""ui8
se define como'\000'
, que es esencialmente'\0'
.También puede utilizar la sintaxis de pseudoconstructor.
Lo encuentro más legible que el casting.
fuente
Hasta donde yo sé, no es así, no existe tal sufijo. Sin embargo, la mayoría de los compiladores advertirán si un literal entero es demasiado grande para caber en cualquier variable en la que esté tratando de almacenarlo.
fuente