Newsgroup: it.comp.lang.c++
Titolo: Virgole e ;

Scusate la mia banale domanda,
costa più in fatto di prestazioni:
            int a = 10;
            int b = 20;
            o
            int a = 10, b = 20;
Il secondo non lo si può sempre utilizzare ma di certo sembra una
dichiarazione  migliore.
Secondo voi nel dichiarare parametri all'interno delle funzioni non sarebbe
meglio utilizzare il ; come le usuali dichiarazioni di variabili piuttosto
che la virgola in modo da scrivere:
     int prova(int a, b, c ; int* puntatore) {}
Grazie dell'attenzione.
-----------------------------------------------------------------
Francesco Fassi
frances...@libero.it
-----------------------------------------------------------------

 Scusate la mia banale domanda,
?!?!? (forse è il caso che fai una pausa)

      int prova(int a, b, c ; int* puntatore) {}
No, nessun compilatore C++ standard te lo accetterebbe.
Alex

      int prova(int a, b, c ; int* puntatore) {}
E perché vuoi cambiare una sintassi che è andata bene per tanti anni e
tanti linguaggi?
EMG

     int prova(int a, b, c ; int* puntatore) {}
E perché?
-------             --------
J  I  G  G  L  Y  P  U  F  F .
-------             --------


C'era la vecchia sintassi del 'C' ( che NON va bene in C++ a detta del mio
compilatore ). Che permetteva di fare questo
#include <stdio.h>
// int	f(  int a, int b )	nuovo stile
int	f( a, c, b )		// old style	
	int a,b;		// notare che posso raggruppare le variabili	
	char c;			// in ordine vario
{
	printf("a=%d, c = %c, b=%d\n",a,c,b );
}
int main( ){ f( 5,'b',10 );}	
Che io sappia pero' e Sconsigliato dallo standard ....

Scusate la mia banale domanda,
Si potrebbe risponderti dicendoti che scrivere in un modo o nell'altro
e' la stessa cosa e che il prototipo di funzione che hai scritto e'
errato, ma la domanda vera, secondo me, e' : "perche' ti poni queste
domande ?" ;)

 ha scritto nel messaggio
news:u3cdgs0gpqnp8isnf...@4ax.com...

Per quanto riguarda il primo caso in un programma ho scritto:
             int a;
             int b;
e il professore me l'ha segnato errore perché secondo lui è da deficienti
una dichiarazione del genere e per l'appunto mi ha aggiunto che costa in
fatto di prestazioni.
Nel secondo comprendo anch'io che è potenzialmente scorretto ed era solo un
parere del tutto personale.

 fatto di prestazioni.
Non credo proprio che possa costare in atto di prestazioni.
Quanto allo stile, come Alex ha fatto già notare, se ci sono di mezzo
reference o puntatori, dichiarare tutto sulla stessa riga ha come unico
effetto quello di rendere meno agevole la lettura. Ad es:
   int a=1,&b=a,*c(&b); 
Max

parere del tutto personale.
Tanto il compilatore se ne frega di come lo scrivi...
Quello e' uno stile di programmazione del programmatore, per il
compilatore e' la stessa cosa (a meno che non ne usi uno veramente
schifoso, ma anche qui la vedo difficile in questo campo...)
--
 (o-  | c:\> win2000patch001.exe
 //\  | This Microsoft(c) patch fix all bugs present. All rigth reserved.
 V_/_ | Insert Linux boot disk to continue ... loading kernel ...
http://pinguin.linuxbox.com
 r.salmaso(at)
flashnet.it

fatto di prestazioni.
Allora non si tratta di pignoleria... il tuo professore dice proprio
delle cose sbagliate. E' semplicemente assurdo che definisca come un
errore "da deficienti" la scelta di separare in due righe la
dichiarazione di due variabili dello stesso tipo, ed inoltre non é
affatto vero che costa in fatto di prestazioni. Al massimo ti può far
aumentare la lunghezza del file sorgente di 3 miseri byte(figurarsi),
ma in compenso aumenta la leggibilità del programma.


 fatto di prestazioni.
L'appellativo di cui sopra sarebbe, secondo me, perfettamente adeguato
riferito a chi l'ha utilizzato (il tuo "professore"). Mah...
EMG

fatto di prestazioni.
Il tuo professore non conosce il C/C++.
Non ti meravigliare.
Scommetto che e' collega di quel professore (EMG se lo ricordera') che
si ostinava a dire che il C non possiede le funzioni con argomenti
variabili e che printf() doveva essere scritta in qualche altro modo !

 ma in compenso aumenta la leggibilità del programma.
Credo che d'ora in avanti dimenticherò l'uso della virgola nelle
dichiarazioni per quanto ne dica il professore--.
Può sembrare una barzelletta ma due mesi fa voleva spiegarci come si copiano
i cd-rom senza il masterizzatore.. Ovvero (secondo  lui) usando due calamite
e ponendo i due cd alle loro estremità...
Personalmente mi pare che sia sconsigliato porre calamite nei pressi di
dischi con supporto magnetico.
Di sicuro questo fa  risaltare la sua conpetenza ed aprendo la parentesi,
sostiene che il vecchio gw-basic era molto più difficile da imparare del C.
Un'altra volta a detto che il C++ differiva dal C soltanto a causa della
keyword class...
Arrivederci e un grazie a tutti.


sostiene che il vecchio gw-basic era molto più difficile da imparare del C.
Be', a questo punto, ritengo che per lui lo fosse davvero.

 dischi con supporto magnetico.
Sicuramente, anche se i CD non sono supporti magnetici.
EMG

keyword class...
Confermo: il tuo professore di informatica ne sa poco e dice molte
fesserie. Evita di prendere le sue dichiarazioni come oro colato.


keyword class...
Ma che docente e', scuole superiori o che altro...? Cosa insegna (oltre
a fanta-informatica)?
Paolo

Ma sul finale (sono esterno alla discussione) lo standard dice qualcosa a
proposito dell'uso o no della virgola, non pone qualche limitazione?
Grazie



Non mi risulta che l'uso dell'operatore virgola sia in qualche modo
limitato (almeno relativamente al caso in esame).
Paolo

A questo proposito vorrei parlare di un errore che mi è capitato:
int a = 0, b = 0, *const c = &a, static c;
L'errore era comunque voluto e mi ha dato assai fastidio veder il mio
Visual C++ compilarlo correttamente, eppure dichiaro una variabilestatica e
una costante di tipo puntatore. 
Concordo pienamente con il  Sig. Francesco FASSI (da non confondere con il
sottoscritto)  e Alex Martelli quando affermano che la sintassi con uso
della virgola è poco leggibile e forse adesso  comprendo  il motivo per il
quale lo standard la sconsigli tanto.
Arriverdeci a Tutti

Le virgole possono essere usate ma non devono essre "abusate"...
ad esempio:
if (...) a=0,b=3;
è più leggibile e veloce da editare che
if (...)
{
	a=0;
	b=3;
}
Ciao, Luc.


 }
Io invece trovo molto piu' chiaro e leggibile questo (ma so che molti
non concordano con me. Se non altro ti permette di inserire breakpoint o
eseguire passo passo tutto le istruzioni col debugger.
Ciao,
Nicola
P.S. Come e' stato sicuramente gia' detto, la virgola come separatore di
dichiarazioni e' una cosa ben diversa dalla virgola come separatore di
espressioni.

}
Dipende dai punti di vista, chiunque abbia un minimo di conoscenza
reale del C++ non si fa molto problemi, ma la seconda sintassi mi
sembra largamente piu` immediata.
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------


Luca