Newsgroup: it.comp.programmare
Titolo: Quiz! Quale dei due?

So per certo che pur di non correre rischi compilerete i due codici,
comunque provate a rispondere (magari per conto vostro) senza compilarlo.
L'ho provato soltanto su Visual C++ 6.0...
Quale tra i seguenti due codici stamperà più caratteri?
-------1------
#include <cstdio>
enum {felice, triste, molto_triste};
char *string[3] = {"felice", "triste", "molto_triste"};
void main()
{
 int stato_corrente;
 // sono felice :-)
 stato_corrente = felice;
 // sono triste :-(
 stato_corrente = triste;
 // sono molto triste (:-\
 stato_corrente = molto_triste;
 printf("Oggi sono %s\n", string[stato_corrente]);
}
--------------
------2------
#include <cstdio>
enum {felice, triste, molto_triste};
char *string[3] = {"felice", "triste", "molto_triste"};
void main()
{
 int stato_corrente;
 // sono felice :-)
 stato_corrente = felice;
 // sono triste :-(
 stato_corrente = triste;
 // sono molto triste (:-\
 stato_corrente = molto_triste;
 printf("Oggi sono %s\n", string[stato_corrente]);
}
--------------
Kiuhnm

 Quale tra i seguenti due codici stamperà più caratteri?
Ma non sono uguali i due programmi?
Comunque non avevo la minima idea che succeddesse una cosa del genere...
-- 
Marco Barisione
http://spazioinwind.libero.it/marcobari/

 
nessuno, piu` che altro perche' ho la nettissima impressione che siano uguali...
Adieu,
-- 
Lestat de Lioncourt  -- a.k.a --  Ciro Mattia Gonano
 Undergraduate student in Computer Science at University of Bologna
 IHGGer #1049   <=>  ICQ#: 52631406   <=>   URL: 
http://www.CS.UniBO.It/~gonano
 Debian admin at 
Students.CS.UniBO.It
 <=> look at headers for my JabberID & GPG

 Quale tra i seguenti due codici stamperà più caratteri?
Devi aver sbagliato ad incollare..i programmi sono identici
-- 
Rhymes (rhy...@NOSPAMmyself.com)
linux registered user #219707
linux registered machine #172395

 Quale tra i seguenti due codici stamperà più caratteri?
come al solito, le bacchettate che meriti:
 - printf non esiste, in C++. Si chiama std::printf. Ho provato, giusto
   per curiosità, e, se non qualifico correttamente il nome, il Borland
   C++ Builder non lo compila nemmeno
 - il backslash a fine riga è il carattere di continuazione. La maggior
   parte degli editor non lo sa (e il tuo ne fa parte - ho indovinato?) 
   e mostra l'ultima assegnazione come uno statement. SciTE (quello che
   uso io), invece, la riconosce correttamente come un commento. Se non 
   aiuta l'editor, il compilatore dovrebbe. Il tuo, parrebbe di no. Con
   il Borland ottengo, con le impostazioni predefinite, questo warning:
   "W8010 Continuation character \ found in // comment"
 - i due programmi sono identici. Forse la prima volta volevi usare uno
   slash in avanti e la seconda uno all'indietro, ma t'è andata male
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.0. C, C++ and ASM developers
                               and beta testers are welcome!

Non meriti risposta. Scendi dalla tua torre di Hanoi e impara a distinguere
le cose importanti dalle cretinate.
Kiuhnm


ma anche no... hai la sfera di cristallo [tele|psico]patica, per caso?


    "W8010 Continuation character \ found in // comment"
Lo fa anche il VC++:
| warning C4010: single-line comment contains line-continuation character


 cambiare il return type della main da void a int.
IMVHO il gcc32 sbaglia.
Comunque chiediamo su un NG più appropriato riportando il codice
"incriminato":
#include <cstdio>
enum {felice, triste, molto_triste};
char *string[3] = {"felice", "triste", "molto_triste"};
void main()
{
 int stato_corrente;
 // sono felice :-)
 stato_corrente = felice;
 // sono triste :-(
 stato_corrente = triste;
 // sono molto triste (:-\
 stato_corrente = molto_triste;
 printf("Oggi sono %s\n", string[stato_corrente]);
}
x-post e follow-up
--
Gerolamo

 caso? 
no, ho solo questa pessima abitudine di avere ragione. E anche stavolta 
ne ho. Con una rettifica: Kiuhnm è stato fregato da Outlook Express che 
si mangia gli spazi a fine riga ("ho dovuto postare con telnet!!!"). Il 
primo programma ha un backslash in fondo al terzo commento. Il secondo, 
invece, ha uno spazio ("[...] put some other character after it"). Sai, 
a forza di risolvere problemi di Windows ad amici, parenti e familiari, 
un callo da Sherlock Holmes te lo finisci per fare


 finisci per fare
Complimenti per la faccia tosta:
"...con una piccola rettifica! L'assassino non era il mio amico Watson, ma
il maggiordomo!"
"- i due programmi sono identici. Forse la prima volta volevi usare uno
   slash in avanti e la seconda uno all'indietro, ma t'è andata male"
Kiuhnm

 come al solito, le bacchettate che meriti:
eheh comunque g++ compila previa sostituzione di void con int


 Non meriti risposta.
Non per prendere le sue difese: che ha detto di sbagliato?


 Non per prendere le sue difese: che ha detto di sbagliato?
Non "che cosa", ma "come".
Kiuhnm

 Lo fa anche il VC++: [...]
posso mica provare tutto il codice con tutti e tre i compilatori :-)


 Non "che cosa", ma "come".
no, Kiuhnm, il mondo intero *non* ti riverisce nè bacia la terra su cui 
cammini. Una persona a cui non può fregare un accidente di quanti libri 
di Knuth hai letto, nè di quante strutture di sistema di Windows 95 hai 
fatto il reversing, nè dei "bei vecchi tempi in cui la VERA ABILITA' di 
un programmatore veniva premiata, non come oggi!!!!", punti esclamativi 
superflui inclusi, nè di quanto tu ti diverta a programmare in assembly 
piuttosto che in C++ imbastardito, la finisci *sempre* per trovare


 Watson, ma il maggiordomo!"
no no, caro: "L'arma del delitto non era il ferro da stiro, ma le molle 
del caminetto", e converrai che c'è una bella differenza


 la finisci *sempre* per trovare
E' sempre così: alla fine è sempre un fatto d'invidia.
L'invidia è una brutta malattia e in quanto a me, non ho mai detto di aver
fatto qualcosa che non ho fatto.
Per quanto riguarda Knuth, l'ho conosciuto tramite questo ng (qualcuno ne
aveva parlato tempo fa).
Comunque ti consiglio veramente di cambiare atteggiamento verso gli altri:
puoi solo guadagnarci.
Kiuhnm
P.S. Non pastrocchiare con i f/up e non crosspostare.

 g++ -v && g++ -Wall -o kiu kiu.c
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.2.1 [FreeBSD] 20021119 (release)
kiu.c:7: `main' must return `int'
kiu.c:7: return type for `main' changed to `int'
kiu.c:16:2: warning: multi-line comment
.... kihum.. la prossima volta che incolli codice in cui main ritorna
void giuro che pago qualcuno per farti cercare e castrare :-)
riguardo i namespace.. Juliet ha perfettamente ragione..
<cite src="Draft C++ ISOIEC 14882 1998" par="17.4.1.12 [lib.headers]">
 Except as noted in clauses 18 through 27, the contents of each header
 cname shall be the same as that of the corresponding header name.h,
 as specified in ISO/IEC 9899:1990 Programming Languages C (Clause 
 7),or ISO/IEC:1990 Programming Languages—C AMENDMENT 1: C Integrity,
 (Clause 7), as appropriate, as if by inclusion. In the C++ Standard
 Library, however, the declarations and definitions (except for names
 which are defined as macros in C) are within namespace scope (3.3.5)
 of the namespace std.
</cite>
ergo.. correggiti se puoi..
da un occhio a questo e dimmi se ti piace:
http://unboffable.hn.org/blindaboutyou_c.html
ciao
 sbirish

 
http://unboffable.hn.org/blindaboutyou_c.html
E' carino, ma dargli un occhio mi sembra proprio troppo!
VC++ mi dà alcuni warning di troncamento e uno riguardo a un extern :-)
Kiuhnm

Magari se supportasse le ultime CPU...
oddio se è un fatto di comodità per usare c+masm con lo stesso ide..
non ho proprio idea di cosa consigliare..
per c e c++ io attualmente da win preferisco devc++ con gcc 3.2
(MingW) ( 
www.bloodshed.net
 )
nulla ti vieta cmq di restare con vc++...
se scrivi attenendoti agli standard compila lo stesso..
ah dimenticavo.. ad occhio nella nel codice
obfuscated che avevi postato.. usi una main con tre parametri..
envp è una estensione comune.. ma neanche quella è standard.
ciao
 sbirish
-- 
ho scritto ti amo sulla sabbia del gatto.

 comodo?
Scarichi mingw e dev-c++ e li configuri
Cosi hai il gcc3.2 e un editor decente


 Cosi hai il gcc3.2 e un editor decente
Un editor (IDE) decente basta a chi deve "giocare" programmando... ;-PPP 
-- 
Luc.

 dev-c++ e li configuri
A me fa abbastanza schifo...
Ora sono passato a VIM per tutti i linguaggi di programmazione e funziona 
bene.


 bene.
Lo uso poco...preferisco jEdit per Java e IDLE per Python


 Un editor (IDE) decente basta a chi deve "giocare" programmando...
mi spieghi il senso di questa frase? Non riesco ad afferrarne il concetto
chiave


 chiave
Se devi perdere tempo con un editor non all'altezza... come fai a 
programmare al 100%? Spero di essere chiaro...
-- 
Luc.

 programmare al 100%? Spero di essere chiaro...
Intendi dire che "decente" non è abbastanza, giusto?
Kiuhnm

 Magari se supportasse le ultime CPU...
Ho sbagliato a scrivere!
Intendevo dire "COME" HO FATTO PER IL MASM.
Non voglio usare l'asm con il c++, mi riferivo a un editor che ho modificato
per fargli produrre dei file VXD automaticamente.
Non vorrei dover fare la stessa cosa col c++.
Kiuhnm

Rhymes wrote:
Com'č il ...Codewarrior(s?) se non ricordo male...
Kiuhnm

 Com'è il ...Codewarrior(s?) se non ricordo male...
E' una domanda? Non lo so mai usato..


 E' una domanda? Non lo so mai usato..
Sě era una domanda senza il punto interrogativo (ero sovrappensiero)
comunque sto scaricando GCC 3.2.2, Dev 5 e KDevelop per Win32:
http://sourceforge.net/projects/kde-cygwin/
Quest'ultimo dovrebbe essere un porting da Linux a Win32 di un clone del M$
Visual C/C++.
Kiuhnm

 Visual C/C++.
KDevelop è un ottimo ambiente di sviluppo a detta di molti, per lo meno in
ambiente Linux/KDE


bene.
devc++ è solo un editor... che ti piaccia o no di sicuro
cambia poco nel tuo modo di programmare.
stessa cosa per vim.. e per qualsiasi altro editor che non
sia un rad.
ciao
 sbirish

 sia un rad.
Veramente mi pare che possa creare progetti, completare espressioni,
elencare le classi e infine debuggare il codice sul posto.
Piů che un editor mi sembra un IDE.
Kiuhnm


wrote:


mi spieghi cosa non avrebbe di _all'altezza_ devc++?
per programmare al 100% serve solo un cervello che funzioni
al 100%.
oppure è il solito commento "io codo meglio perché uso emacs"
"io sono più figo perché uso vi"?
ciao
 sbirish

Più che un editor mi sembra un IDE.
ehrm si kiuhm.. è un ide..
non intendevo fare una distinzione tra editor o ide..
intendevo fare il punto sul fatto che non sia l'ide ( o l'editor
o qualsias altra cosa ) che spinge la produttività e la qualità
del prodotto alle stelle..
detto in misere parole.. se codi da schifo possono darti il miglior
editor... 
viceversa anche cat può venire buono se hai le idee chiare..
onestamente io preferirei un buon compilatore ed una pessima ide 
piuttosto che il contrario..
e cmq.. la differenza tra ide e editor.. non mi sembra tanto marcata..
prendi ultraedit vim e emacs..
sintax higlight su tutti.. puoi sistemarti la code completion..
idem per i progetti.. puoi compilare dall'editor ed anche debuggare..
sono editor o sono ide?
( emacs è un os *grin* )
ciao
 sbirish

 Intendi dire che "decente" non è abbastanza, giusto?
Esatto. L'editor deve essere ottimo. 
-- 
Luc.

 "io sono più figo perché uso vi"?
Non lo so. Gli editor dell'età della pietra non li uso piu...
(emacs su Amiga e vi alle superiori)
... meno male. 
-- 
Luc.

Esatto. L'editor deve essere ottimo. 
definisci ottimo?
ciao
 sbirish

 Non lo so. Gli editor dell'età della pietra non li uso piu...
Dici? Io sono passato a VIM da VC++ per il C/C++, PythonWin per Python e un 
editor sempre diverso per html perché cercavo qualcosa:
- cross-platform
- che non mi rallentasse rispetto a ciò che usavo prima
- molto personalizzabile
- uguale per ogni tipo di file di testo (c, c++, python, txt, 
  html...)
- facile ma molto potente
- veloce
- possibilmente free
- possibilmente che sia già presente sui più diffusi sistemi operativi o 
  che stia in un dichetto.
Il meglio che ho trovato è stato Vim. Se hai qualche altra idea sarei 
felice di cambiare in meglio.


 definisci ottimo?
Ad esempio l'editor del Visual C++, completamente "programmabile". 
-- 
Luc.

 Ad esempio l'editor del Visual C++, completamente "programmabile". 
E completamente integrato al compilatore e al revision-control.... 
-- 
Luc.

E completamente integrato al compilatore e al revision-control.... 
ok quindi tu valuti un editor da :
1) programmabilta
2) integrazione al compilagtore
3) integrazione ad un software di revision control
devc++ è:
1) è opensource freesoftware ( abbastanza programmabile? )
2) è integrato _ai_ compilatori che supporta ( i port di gcc.. che tra
l'altro offrono una buona aderenza agli standard )
3) ha una comoda interfaccia verso cvs ( che è lo standard de facto )
quindi perché non dovrebbe essere un buon editor?
ciao 
 sbirish

 ( emacs è un os *grin* )
Probabilmente sono <-- rot-ide <--
Kiuhnm

l'IDE faccia la differenza (e non poco).
parlavamo di C e C++ se non erro.. da un paio di mesi uso 
dev++ + cppunit..
quindi praticamente compilo ad ogni test ed ogni modifica per
vedere se è verde..
e non mi sono trovato affatto male..
mi sembra logico poi scegliere un ambiente adatto alle proprie
esigenze.. ma partire per partito preso dicendo che qualcosa
fa schifo.. non mi sembra il caso.
Uno sbirish molto più in userland. 

 fa schifo.. non mi sembra il caso.
Io devo ancora provarlo il Dev-C++, quindi non posso esprimere giudizi
(parlavo in generale).
Kiuhnm

 gli altri: puoi solo guadagnarci.
grande fatica, scarsa motivazione, nessun guadagno di rilievo, e ancora 
qualche cicatrice. Strada già percorsa, grazie. Quello che facciamo non 
può cambiare quello che siamo
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.0. C, C++ and ASM developers
                               and beta testers are welcome!

 sintassi delle strutture, delle classi, delle funzioni, ecc...?
altra ragione per non usare il C++ Builder. Ho dovuto disattivare tutte 
le funzioni di completamento automatico, a causa della loro lentezza


 lentezza
Peccato...il Borland 5.5 non era gratuito?
Kiuhnm

Peccato...il Borland 5.5 non era gratuito?
Si
Rhymes

 Il VC++ ha solo il difetto di non essere ISO. Per il resto è perfetto.
Se ti piace il VC, ti direi di passare alla versione 7 (quella del Visual
Studio .NET) che è molto migliorata dal punto di vista dello standard.
La futura versione 7.1 (che è alla final beta) dovrebbe avere come
miglioramento principale proprio la conformità allo standard C++
(oltre alle aggiunte su .NET)
http://msdn.microsoft.com/visualc/productinfo/visualc03/default.asp
Per questo, se ti trovi bene col VC++, il mio consiglio è di fare un
upgrade.
ciao
--
Gerolamo

 Peccato...il Borland 5.5 non era gratuito?
c'è solo il compilatore, e pochissimo altro. Nemmeno tutti gli header e 
le librerie. E con un help incompleto. Va bene giusto per verificare la 
compatibilità del tuo codice con il Borland C++, ma per nulla di serio


 sicuro? Windows 2000 come ci girerebbe, altrimenti?
Win2000 e XP non mi sembra disattivino il paging... (sarebbe stupido farlo
visto che l'OS "gioca in casa")
Kiuhnm

 Adesso la provo e ti faccio sapere.
L'ho provata...non fatico più a credere che funzioni praticamente tutto.
Esegue un'emulazione *completa* e quindi è ovvio che funzioni praticamente
qualsiasi software, ma ho anche potuto constatare che è lentissima.
Ho un XP 2100+, ma all'interno della VM il software girava come se fosse
stato su un 386 ;-)
Comunque l'installazione di Win98SE è durata un sacco di tempo e alla fine
si è inchiodata.
Sapendo che è un'emulazione completa non m'interessa più tanto: ero curioso
di sapere come avessero fatto a mantenere il controllo della CPU, dell'IDT,
ecc..., ma praticamente ogni singolo opcode viene emulato.
Kiuhnm

 ma praticamente ogni singolo opcode viene emulato.
Sicuro? Mi sembrava di aver letto che non era cosě.


 Sicuro? Mi sembrava di aver letto che non era cosě.
Non ne sono sicuro, ma se cosě non fosse non si spiegherebbe la lentezza.
Del resto come potrebbe funzionare codice *qualsiasi* se la CPU non fosse
interamente emulata?
Insomma č come un emulatore per SNES o via dicendo. Verranno utilizzate
varie ottimizzazioni come eseguire parti di codice "non rischiose" in modo
diretto, ecc..., perň resta sempre un'emulazione completa (non č come
eseguire un programma DOS sotto Windows).
Kiuhnm

 diretto, ecc..., però resta sempre un'emulazione completa
Da quello che avevo letto questo aumentava molto la velocità. Non l'ho 
comunque mai usato, anche perché non è free.


 comunque mai usato, anche perché non è free.
Molto può non essere abbastanza. Preferisco lavorare su un vero PC (tanto ne
ho due: su uno ho Win98SE e sull'altro (questo) WinXP).
Comunque puoi scaricare la versione TRIAL.
Kiuhnm

 viene emulato.
no, è una macchina virtuale vera. Se guardi bene, ha un driver per fare 
tutto quello che non potrebbe fare altrimenti. BOCHS è un emulatore, ed 
è lentissimo. Provalo, se vuoi farti un'idea della differenza


 meno in ambiente Linux/KDE
Sono d'accordo. Manca l'IntelliSense, ed è l'unica cosa che rimpiango di
VS. Però la 3.0 (per quanto in alpha) è davvero molto bella, ed
ultimamente è anche molto stabile...
-- 
Andrea Bergia - studente              Linux Registred User #281550
"The one thing we're all waiting for, is peace on Earth and an end to
war,
it's a miracle we need, the miracle, the miracle, 
Peace on earth and end to war today,
That time will come one day you'll see when we can all be friends"

 differenza
BOCHS potrebbe essere semplicemente non ottimizzato. Esistono emulatori per
l'Ultra 64 che vanno come schegge (e non sto parlando dello SNES!) e altri
che sono lentissimi.
Comunque devo ringraziarti veramente per avermi dato l'idea della macchina
virtuale. Ho deciso di aggiungere una macchina virtuale all'interno del mio
OS: sarà divertente e mi solleverà dal fare software ad hoc. Per esempio
dovrei fare un compilatore, un editor e tante altre cose, mentre così posso
eseguire qualsiasi software dall'interno del mio OS/Debugger.
Avevo pensato di emulare Windows, ma emulare un PC è più facile e più comodo
(tanto i computer stanno diventando sempre più potenti, quindi...).
Eseguirò i programmi in Ring 3 emulando il Ring 0. Forse la VM Workstation
fa proprio così. In questo modo il programma ospite è libero di funzionare a
piena velocità e sarà interrotto soltanto quando necessario.
Penso che sarà una bella avventura...prima però dovrò finire il sistema
operativo.
Kiuhnm

 (tanto i computer stanno diventando sempre più potenti, quindi...).
   IBM MVS.
-- 
Alla prossima,
Marco

 quindi perché non dovrebbe essere un buon editor?
E chi lo ha detto, precisamente?
PS: dove lavoro sviluppiamo software editoriale, quindi di editor di 
testi (tra le altre cose) ce ne intendiamo un po... fidati.
-- 
Luc.