È un int lo stesso tipo di non firmato o firmato?È un int uguale a quello senza segno o firmato?
risposta
Plain int
è lo stesso signed
è lo stesso di signed int
int
s sono firmati per impostazione predefinita.
C++ standard 3.9.1/2:
Ci sono quattro tipi interi firmati: “long int” “signed char”, “short int”, “int”, e < ...>
C++ standard 3.9.1/3:
Per ciascuno dei tipi interi firmati, c'e xists una corrispondente (ma differente) senza segno tipo intero: “char”, “unsigned short int”, “unsigned int”, e “unsigned long int,” < ...>
Quindi, sizeof(int)
è uguale a sizeof(unsigned)
. Ma boost::is_same< int, unsigned >::value
è falso.
+1 per la citazione di Standard. – Cumbayah
signed int
è lo stesso di int
e specifica un valore intero che può avere valori sia positivi sia negativi.
unsigned int
d'altra parte può solo avere valori positivi, quindi il più alto valore positivo è molto maggiore di quello di uno signed int
.
In realtà il * intervallo * di valori è esattamente della stessa dimensione, è appena spostato in modo che il valore minimo sia 0. –
Hai ragione, quella era una scelta scadente di parole. Risolto;) –
ints
sono firmati per impostazione predefinita, come lo sono longs
.
Quindi, int
, signed
e signed int
sono la stessa cosa.
Analogamente long
e signed long
sono gli stessi.
chars
d'altra parte, non ha un valore predefinito. Le implementazioni possono considerarle firmate o non firmate (molti hanno un interruttore a linea di comando da scegliere). char
, signed char
e unsigned char
sono considerati tre tipi distinti per la risoluzione di sovraccarico, l'instanazione di modelli e altri luoghi.
L'ultima frase è troppo limitata. Non è solo la risoluzione del sovraccarico, è ovunque. Per esempio. anche come argomenti del modello.Quindi 'std :: vector
@MSalters: Buon punto, aggiornato. –
- 1. Come convertire l'int firmato a 32 bit int a 32 bit senza segno int?
- 2. l'aggiunta di due firmato o interi senza segno
- 3. È il letterale 0xffffffff int o non firmato in C++
- 4. QVariant firmato/i confronti senza segno
- 5. È un parametro int * esattamente uguale a un parametro int []
- 6. Sottrai intero Firmato dal numero intero senza segno
- 7. Byte Java non firmato [2] su int?
- 8. Come distinguere firmato e intero senza segno LLVM
- 9. In che modo il computer distingue un intero è firmato o non firmato?
- 10. int Perché non firmato conteneva numero negativo
- 11. Come scrivere un letterale int breve senza segno?
- 12. php non è uguale a non è uguale, uguale a
- 13. blocco C diventa espressione: ({int a = 1; int b = 2; a + b;}) è uguale a 3
- 14. uguale segno con haskell letterali
- 15. meno o uguale a
- 16. è size_t sempre senza segno?
- 17. Conversione firmato a non firmato a Swift
- 18. valori senza segno C
- 19. C - Conversione long int a stringa esadecimale firmato
- 20. Come implementare un int non firmato a 64 bit in Java utilizzando la classe BigInteger?
- 21. Moltiplicazione con segno e senza segno
- 22. PHP: se A è uguale B o C o D
- 23. iOS: Come controllare se un valore "int" uguale a "zero"
- 24. Segno "Non uguale" in Visual Prolog?
- 25. typecasting implicito in C (conversione a 32 bit senza segno a 8 bit u INT)
- 26. Il carattere non firmato c = 255 è "11111111" o no?
- 27. Perché java richiede un doppio segno di uguale?
- 28. Ho la garanzia che sizeof (type) == sizeof (tipo senza segno)?
- 29. == rispetto è uguale a C#
- 30. PHPMailer inserisce '=' segno uguale ogni 75 ° carattere
Alcuni (tutti?) I compilatori dispongono di un'opzione che consente di modificare l'impostazione predefinita in non firmata. In MSVC, è/J. –
FYI Il compilatore CCS per i controllori PIC Microchip è senza segno di default. Argh! – kenny
L'opzione del compilatore/J ha effetto su char, non su int. "char" può o non può essere firmato. "char", "signed char" e "unsigned char" sono sempre tipi distinti, anche se "char" è firmato o meno. –