Thread View: de.comp.lang.c++
4 messages
4 total messages
Started by Torsten Vogt
Fri, 03 Nov 1995 12:09
Re: enums
Author: Torsten Vogt
Date: Fri, 03 Nov 1995 12:09
Date: Fri, 03 Nov 1995 12:09
64 lines
2422 bytes
2422 bytes
Hi Benni,
[...]
> Mein Compiler weigert sich enums implizit nach int zu konvertieren. Das
> ist ja einerseits irgendwie korrekt, andererseits doch aber hochgradig
> unpraktisch, da dann so schoene Konstrukte, wie:
>
> const int maxcolor = 3;
> enum color {blue, white, green};
>
> for(i=0;i=maxcolor;i++){
^^^^^^^^^^
Oooops, kann es sein, dass dies Dein Fehler ist? Wie waere es mit
i<maxcolor ? Welchen Datentyp hat i eigentlich? Vom Typ color?
> draw(i);
> }
>
> nicht mehr moeglich sind. Ich gebe ja zu, dass das nicht typkorrekt ist,
> allerdings wuerde doch eine warning hier wirklich ausreichen, oder. Ich
> finde fuer solche Sachen sind enums doch eigentlich da ;-)
>
> Compiler: HP-UX-9 CC -> Error
> g++ 2.5.8 -> Warning
>
Ich habe folgendes Programm auf einer Sun SPARC station und gcc 2.6.3
ausprobiert:
enum color {blue,white,green};
int main() {
color i;
for (i=0; i<3; i++)
printf("%d\n", i);
return 0;
}
Zum einen tut es was es soll, zum anderen gibt es die von Dir geforderten
Warnings. Uebrigens finde ich folgende Konstruktion sinnvoller, und sie
produziert keine Warnings:
enum color {blue,white,green};
int main() {
int i;
for (i=blue; i<=green; i++)
printf("%d\n", i);
return 0;
}
Gruss Torsten
--
---------------------------------------------------------------------
| Torsten Vogt |
| Universitaet Mannheim - Lehrstuhl Praktische Informatik I |
| Seminargebaeude A5 |
| D-68131 Mannheim |
| |
| Tel : 0049-621/292-5132 Fax: 0049-621/292-5297 |
| email: vogt@pi1.informatik.uni-mannheim.de |
| WWW : http://pi1.informatik.uni-mannheim.de/HomePages/vogt.html |
---------------------------------------------------------------------
Re: enums
Author: Ralf W. Stephan
Date: Fri, 03 Nov 1995 14:09
Date: Fri, 03 Nov 1995 14:09
18 lines
774 bytes
774 bytes
Torsten Vogt writes:
> ... Uebrigens finde ich folgende Konstruktion sinnvoller, und sie
> produziert keine Warnings:
> enum color {blue,white,green};
> int i;
> for (i=blue; i<=green; i++)
Besser so, weil Du dann nicht den Code verändern mußt, wenn noch
mehr Farben dazukommen:
enum color {blue,white,green,maxcolor};
for (int i=blue; i<maxcolor; i++)
ralf
--
PGP: 1024/0xA713ECE9 2047/0xC8E605F5
Re: enums
Author: Benjamin Baermann
Date: Sat, 04 Nov 1995 20:51
Date: Sat, 04 Nov 1995 20:51
76 lines
2811 bytes
2811 bytes
In <47d0ot$co6@trumpet.uni-mannheim.de> vogt@pi1.uni-mannheim.de (Torsten Vogt) writes:
>Hi Benni,
>[...]
>> Mein Compiler weigert sich enums implizit nach int zu konvertieren. Das
>> ist ja einerseits irgendwie korrekt, andererseits doch aber hochgradig
>> unpraktisch, da dann so schoene Konstrukte, wie:
>>
>> const int maxcolor = 3;
>> enum color {blue, white, green};
>>
>> for(i=0;i=maxcolor;i++){
> ^^^^^^^^^^
>Oooops, kann es sein, dass dies Dein Fehler ist? Wie waere es mit
>i<maxcolor ? Welchen Datentyp hat i eigentlich? Vom Typ color?
Ne, Fehler hat da Programm keine, es ist naemlich keins ;-) Es sollte
nur zur Veranschaulichung dienen. Ich wollte halt einfach enums
"zaehlen". Dummerweise ging die Veranschaulichung wohl deutlich nach
hinten los... sorry, (ja, i sollte ein color sein (warum hab ich trottel
das eigentlich nicht geschrieben - das war doch der sinn des ganzen
postings??))
>> draw(i);
>> }
>>
>> nicht mehr moeglich sind. Ich gebe ja zu, dass das nicht typkorrekt ist,
>> allerdings wuerde doch eine warning hier wirklich ausreichen, oder. Ich
>> finde fuer solche Sachen sind enums doch eigentlich da ;-)
>>
>> Compiler: HP-UX-9 CC -> Error
>> g++ 2.5.8 -> Warning
>>
>Ich habe folgendes Programm auf einer Sun SPARC station und gcc 2.6.3
>ausprobiert:
>enum color {blue,white,green};
>int main() {
> color i;
> for (i=0; i<3; i++)
> printf("%d\n", i);
> return 0;
>}
>Zum einen tut es was es soll, zum anderen gibt es die von Dir geforderten
>Warnings.
Ja. Der gcc gibt auch bei mir nur warnings aus. Was sagt eigentlich der
Sprachstandard?
> Uebrigens finde ich folgende Konstruktion sinnvoller, und sie
>produziert keine Warnings:
>enum color {blue,white,green};
>int main() {
> int i;
> for (i=blue; i<=green; i++)
> printf("%d\n", i);
> return 0;
>}
Ja. Wenn ich aber schon vorher eine Variable vom Typ color habe muss ich
vor jeder Zaehlschleife casten. Das finde ich halt einfach laestig.
Aber wahrscheinlich ist es so schon am besten, da geb ich dir recht.
Gruesse, Benni
--
benni@informatik.uni-frankfurt.de|http://www.uni-frankfurt.de/gnomic/hello.html
"Deshalb, Leute, die glauben, dass Computer werden nicht koennen, wie
Menschen zu denken, auch glaubt nicht in Maschine-Uebersetzung."
enums
Author: Steffen Offermann
Date: Sun, 05 Nov 1995 11:36
Date: Sun, 05 Nov 1995 11:36
31 lines
1293 bytes
1293 bytes
Moin vogt,
03 Nov 95 12:09, vogt wrote to All:
v> Uebrigens finde ich folgende Konstruktion sinnvoller, und sie
v> produziert keine Warnings:
v> enum color {blue,white,green};
v> int main() {
v> int i;
v> for (i=blue; i<=green; i++)
v> printf("%d\n", i);
v> return 0;
v> }
Die finde ich ebenso wenig sinnvoll wie die des Original-Posters,
denn so geraet alles durcheinander, wenn die Reihenfolge der
Farb-Definitionen geaendert wird.
Am besten faehrst Du m.E. so:
typedef enum { blue, while, green, numColors } TColor, *PColor;
...
TColor i;
for ( i=0; i < numColors; i++ )
...
Tschuess, Steffen
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads