c++ - uso - variable long
Tipo C++ sin signo largo int (5)
¿Es unsigned long int
equivalente a unsigned long
? en C ++
En mi opinión son los mismos. Pero vi a algunas personas que seguían usando el código int largo sin firmar. ¿No entiendes por qué? ¿Podría alguien explicármelo?
#include <stdio.h>
int main() {
unsigned long int num = 282672;
int normalInt = 5;
printf("");
return 0;
}
Sí.
long
es solo una abreviatura de long int
. Esto se debe a que, en principio, long
es solo un calificador (por ejemplo, también se puede usar para prolongar un tipo de datos double
)
De la norma C ++ ISO, sección 7.1.5.2, una tabla de especificadores de tipo equivalentes:
La sección 6.7.2 de la norma C99 ofrece la siguiente lista de tipos (esto es solo un extracto):
-
short
,signed short
,short int
, osigned short int
-
unsigned short
, ounsigned short int
-
int
,signed
osigned int
-
unsigned
, ounsigned int
-
long
,signed long
,long int
, osigned long int
-
unsigned long
, ounsigned long int
-
long long
,signed long long
,long long int
, osigned long long int
-
unsigned long long
, ounsigned long long int
Con el siguiente punto adicional:
(5) Cada uno de los conjuntos separados por comas designa el mismo tipo, excepto que para los campos de bits, está definido por la implementación si el especificador
int
designa el mismo tipo comosigned int
o el mismo tipo queunsigned int
.
Sí, son lo mismo. Decir unsigned long int
es simplemente declarar explícitamente que es un int.
Siempre puede mirar el tamaño del tipo por sizeof(unsigned long int)
y sizeof(unsigned long)
Espero que esto ayude.
unsigned long int
es la definición de tipo correcta, sin embargo int
puede ignorarse.
Si unsigned
, signed
, short
, long
, long long
, long
, todos son simples especificadores de tipo para XXX int
.
Ver 7.1 Especificadores [dcl.spec] en el estándar:
3 [Nota: como firmado, sin firmar, largo y corto por defecto implica int, el nombre de tipo que aparece después de que uno de esos especificadores se trata como el nombre que se está (re) declarando. [Ejemplo:
void h(unsigned Pc); // void h(unsigned int)
void k(unsigned int Pc); // void k(unsigned int)
—En el ejemplo] —en la nota final]
y 7.1.6.2 Especificadores de tipo simple [dcl.type.simple]
Table 10 — simple-type-specifiers and the types they specify
Specifier(s) | Type
------------------------+---------------------------------
type-name | the type named
simple-template-id | the type as defined in 14.2
char | “char”
unsigned char | “unsigned char”
signed char | “signed char”
char16_t | “char16_t”
char32_t | “char32_t”
bool | “bool”
unsigned | “unsigned int”
unsigned int | “unsigned int”
signed | “int”
signed int | “int”
int | “int”
unsigned short int | “unsigned short int”
unsigned short | “unsigned short int”
unsigned long int | “unsigned long int”
unsigned long | “unsigned long int”
unsigned long long int | “unsigned long long int”
unsigned long long | “unsigned long long int”
signed long int | “long int”