Virgola come separatore nell'inizializzazione delle variabili (non come operatore)

Virgola come separatore nell'inizializzazione delle variabili (non come operatore)

Per [dcl.decl]/3

lo otteniamo

unsigned int n = foo.size, nxn = n * n;

è uguale a

unsigned int n = foo.size;
unsigned int nxn = n * n;

C'è una nota con eccezioni per altre regole come auto o se un nome oscura il tipo ma in questo caso non si applicano.

Fai molta attenzione con i puntatori se metti più variabili su una singola riga

int * foo, bar;

non ti dà due indicazioni. Invece, foo è un puntatore e bar è un int . Avresti bisogno di

int * foo, * bar;

per ottenere due punti. Per questo motivo preferirei utilizzare

int * foo;
int * bar;

e pagare le combinazioni di tasti extra per motivi di sicurezza.


nxn verrà inizializzato correttamente, poiché n è stato definito e inizializzato nel punto in cui nxn è definito.

Per chiarezza, tuttavia, sarebbe meglio mettere le variabili su righe separate. In questo modo si evitano ambiguità, rendendo più chiare le proprie intenzioni a chiunque legga il codice.