verdammten logischen operatoren...
-
Erstmal danke für die Antworten,
Also - ich hab den Verdacht, dass es was mit der pipe | zu tun hat (müssen unter linux/ubuntu programmieren und da will der die pipe nicht mit altgr + < tippen, weswegen ich die aus der Zeichentabelle reinkopiert hab).
Jedenfalls sagt der gcc "Fehler: verirrtes >\307< im Programm" bzw ">\200<"
und noch eine Warnung, dass es zu wenig Argumente für Format gibt.mfg
-
Also - ich hab den Verdacht, dass es was mit der pipe | zu tun hat (müssen unter linux/ubuntu programmieren und da will der die pipe nicht mit altgr + < tippen, weswegen ich die aus der Zeichentabelle reinkopiert hab).
Naja, das liegt wohl eher am Texteditor oder am Tastaturlayout. Auf Englisch ist das | irgendwo beim rechten kleinen Finger, wenn mich nicht alles täuscht. Vielleicht Unicode verwendet? Im Zweifel den ASCII-Code verwenden, das Zeichen ist '\x7c' (oder oktal '\174'), und das sollte auch in Stringliteralen gehen. Wenn es aber um ein | ausserhalb eines Literals geht, musst du wohl deine Eingabemethode überarbeiten.
Jedenfalls sagt der gcc "Fehler: verirrtes >\307< im Programm" bzw ">\200<"
und noch eine Warnung, dass es zu wenig Argumente für Format gibt.Dieses Programm:
#include <stdio.h> int main(void) { int a, b; for (a=0; a<=3;a++) for (b=0; b<=3;b++) printf ("%d %d %d\n", a&&b, !a||!b, !(a&&b)); return 0; }
Erzeugt bei mir (ubuntu, gcc) diese Ausgabe:
0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0
-
Wenn es aber um ein | ausserhalb eines Literals geht, musst du wohl deine Eingabemethode überarbeiten.
Oder du machst im Notfall ein
#include <iso646.h>
, damit solltest du dir alle vertikalen Striche ausserhalb von Literalen sparen können.
-
Und das beste am Schluss: statt
|
kann man in C auch sagen:
??!
weshalb man fricky's Zeile auch so schreiben kann:
printf ("%d %d %d\n", a&&b, !a??!??!!b, !(a&&b));
-
Ok, danke für den Tipp mit der ascii-tabelle, das sihet besser aus, aber immernoch "verirrte" sachen drin:
"
auf6.c: In Funktion »main«:
auf6.c:11: Fehler: verirrtes »\« im Programm
auf6.c:11: Fehler: expected »)« before numeric constant
auf6.c:11: Fehler: verirrtes »\« im Programm
auf6.c:11: Warnung: zu wenig Argumente fuer Format
"#include <stdio.h> int main(void) { int a, b; for (a=0; a<=3;a++) { for (b=0; b<=3;b++) { printf("%d %d %d %d\n", a&&b, a&b, !a\147\147!b, !(a&&b)); } } return 0; }
mfg
-
Ok mit den trigraphs funktionierts noch besser, aber immernoch nicht...
jetzt is noch ein verirrtes "\" in zeile 11...
dass ich nich selber auf ??! gekommen bin...>_<
mfg
-
Versuch's mal so:
#include <stdio.h> #include <iso646.h> int main(void) { int a, b; for (a=0; a<=3;a++) for (b=0; b<=3;b++) printf ("%d %d %d\n", a and b, (not a) or (not b), not (a and b)); return 0; }
Die Oktal-Angaben sind nämlich nur zwischen jeweils zwei " oder zwei ' sinnvoll.
Mittelfristig solltest du aber wahrscheinlich deinen Editor so konfigurieren, dass du alle ASCII-Zeichen eingeben kannst.
-
bratgurke schrieb:
auf6.c:11: Fehler: verirrtes »\« im Programm
auf6.c:11: Fehler: expected »)« before numeric constantschon wieder dieser 'denglish' compiler *fg*
ist das irgendso'ne gcc-testversion?
-
;fricky schrieb:
schon wieder dieser 'denglish' compiler *fg*
ist das irgendso'ne gcc-testversion?
Nein, das ist scheinbar default-mässig so bei Ubuntu, wenn man als "System-Sprache" Deutsch wählt. Die sind scheibar stolz darauf, dass sie schon die Hälfte übersetzt haben...
-
Ok mit den trigraphs funktionierts noch besser, aber immernoch nicht...
jetzt is noch ein verirrtes "\" in zeile 11...
dass ich nich selber auf ??! gekommen bin...>_<
mfg
-
bratgurke schrieb:
Ok mit den trigraphs funktionierts noch besser...
herzlichen glückwunsch. du hast ein programm, das auf 'trigraphs' angewiesen ist. sowas ist wirklich selten.
-
nja - is atm egal, muss das zeugs in einer Übung eh auf einem Rechner in der Uni laufen lassen, der ist sogar eingestellt und kann pipes
das wichtigste ist, dass eben kein fataler fehler drin ist...
Viele Dank für alle Antworten,
mfg & gute nacht