Ho capito che int x{};
è una sorta di inizializzazione di default, ma è esattamente la stessa di int x = 0;
?C'è una differenza tra int x {}; e int x = 0 ;?
risposta
Il risultato è lo stesso in questo caso.
Non
int x{};
è una sorta di default-inizializzazione
esattamente. Vedi default initialization.
int x{};
è value initialization (dal C++ 11),
Questa è l'inizializzazione eseguita quando una variabile è costruito con un inizializzatore vuoto.
E gli effetti di inizializzazione valore in questo caso (cioè nessun tipo categoria né tipo array) sono:
4) altrimenti, l'oggetto è zero inizializzato.
Infine gli effetti di zero initialization in questo caso sono:
Se T è un tipo scalare, il valore iniziale dell'oggetto è il integrale costante nullo esplicitamente convertito T.
D'altra parte, int x = 0;
è copy initialization; x
viene inizializzato con il valore 0
.
Come @PaulR menzionato, c'è una differenza che int x{};
è supportato solo da C++ 11, mentre int x = 0
non ha tale restrizione.
In questo caso sono identici. int x{}
inizializzerà x
nello stesso modo di static int x
; cioè a zero. Detto questo, trovo lo int x = 0
più chiaro e ha il vantaggio che funziona con gli standard C++ più vecchi.
Sono entrambi la stessa identica cosa. Entrambi saranno inizializzati su 0
.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int y{};
int x = 0;
cout << "y: " << y << endl;
cout << "x: " << x << endl;
return 0;
}
USCITA:
y: 0
x: 0
Si prega di considerare di migliorare questa risposta aggiungendo riferimenti rilevanti, che spiegano che l'output di questo codice segue lo standard, piuttosto che essere causato da [comportamento non definito] (https://en.wikipedia.org/wiki/Undefined_behavior). –
C'è differenza: int x = 1.888; lavorerà con x come 1. Molti problemi in seguito. Tutti i ragazzi professionisti hanno affrontato a volte, nel loro codice o in altri.
ma int x {1,888}; NON compilerà e risparmia problemi.
C'è una domanda correlata a https://stackoverflow.com/questions/20603403/c11-variable-initialization-and-declaration – Jason
- 1. C: differenza tra (int) x e floor (x)?
- 2. Qual è la differenza tra int * x [n] [m] e int (* x) [n] [m]?
- 3. Qual è la differenza tra int x = 1 e int x (1) in C++?
- 4. Qual è la differenza tra `extern int (x) []` e `extern int x []` in C?
- 5. differenza tra void (int) e void (*) (int)
- 6. La vera differenza tra "int" e "unsigned int"
- 7. Differenza tra int * i e int ** i
- 8. Strana differenza tra x e get ("x")?
- 9. Differenza tra x: Chiave e x: Nome
- 10. Qual è lo scopo di una dichiarazione come int (x); o int (x) = 10;
- 11. Differenza tra int e int ricevuto da parseInt in java
- 12. C'è una differenza tra x ++ e ++ x in java?
- 13. Qual è la differenza tra int [] [] e int [,]?
- 14. Differenza tra int e la dichiarazione firmata int
- 15. Differenza tra int main() e int main (void)?
- 16. Bitmap.createBitmap (fonte Bitmap, int x, int y, int larghezza, int altezza) tornare bitmap sbagliato
- 17. Differenza tra nuova HashMap (int) e guava Maps.newHashMapWithExpectedSize (int)
- 18. Differenza tra int fpurge() e int fflush() in C
- 19. Qual è la differenza tra "int * a = new int" e "int * a = new int()"?
- 20. Utilizzo della variabile appena dichiarata nell'inizializzazione (int x = x + 1)?
- 21. serie NumPy, differenza tra una/= x vs. a = a/x
- 22. Qual è la differenza tra if (x^1! = 1) e if (int (x^1)! = 1) in C++?
- 23. Differenza tra long e int in C#?
- 24. Qual è la differenza tra filtro (| x |) e filtro (| & x |)?
- 25. Differenza tra ISNULL (SUM (x), 0) o SUM (ISNULL (x, 0) in SQL Server
- 26. Come definire x ++ (dove x: int ref) in F #?
- 27. Differenza tra int, NSInteger e NSUInteger
- 28. Differenza tra void main e int main?
- 29. C++: int x [+30] è una dichiarazione valida?
- 30. C'è qualche differenza tra "Oggetto [] x" e "Oggetto x []"?
Non è vero che 'int x {}' è supportato in C++ 11 e solo in seguito?Per le persone che hanno bisogno di scrivere codice portatile che funzioni con vecchi standard C++ potrebbe non esserci il caso di preferire 'int x = 0'? –
@PaulR Aggiunto come differenza tra di loro. – songyuanyao