Simple überprüfung

S

Sg

PHP:
if(scanf("%i%c",&i,&a)==2 && a=='\n')

Ist es eig sicher das a VOR dem Vergleichsoperator auf den eingegebenen Wert gesetzt wird auch in C ?

Ahh und wenn ich schon den Thread aufgemacht habe, braucht man eig. den Referenzoperator beim einlesen eines Strings in C mithilfe von scanf !?
Also:
PHP:
char s[9];
scanf("%8s", s);

Soweit mir bekannt ohne ?!
 
Zuletzt bearbeitet von einem Moderator:
Zu deiner ersten Frage:
Ich denke schon, aber sicher gehen kannst du, indem du es selber kompilierst und ausprobierst.

Zu deiner zweiten Frage:
Ja braucht man, denn sonst wird die Variable pass-by-value übergeben (sprich nur eine Kopie) und sie selbst wird nicht verändert.
 
Der Compiler sagt ja, hoffentlich ist es auch so :)

Zu 2 ganz ehrlich im Skript steht eindeutig
"kein Addressoperator beim Array!" hab ich grad gefunden.
 
Hi

Hast recht, wollte aber eigentlich was anderes Ausprobieren :)

Und zwar so:
C++:
char c[16];
char *s;
s=c;
printf("%d %d\n",c,&c);
printf("%d %d\n",s,&s);

Wenn man das ausführt, merkt man, dass ohne & für %s doch besser ist

Gruß
 
Zuletzt bearbeitet:
Guck doch mal hier: http://www.c-plusplus.de/forum/249219

Zu 1. noch:
Es könnte vielleicht auch vom Compiler abhängig sein, ich würde mich nicht ganz drauf verlassen.

Danke, aber eig. gings um Strings nicht um Arrays.

Mhh mir ist es eig. relativ egal ob es geht oder net Hauptsache in der Prüfung ist es dann richtig. :D

@sheel
Es ging eig. um scanf und Referenzoperator bei printf ?!
 
Zuletzt bearbeitet von einem Moderator:
Hi.
PHP:
if(scanf("%i%c",&i,&a)==2 && a=='\n')

Ist es eig sicher das a VOR dem Vergleichsoperator auf den eingegebenen Wert gesetzt wird auch in C ?
Ja. Der && Operator gehört zu den sog. Sequenzpunkten, d.h. alle Seiteneffekte bis zur Ausführung des darauffolgenden Ausdrucks müssen an diesem Sequenzpunkt bereits vollständig erfolgt sein.
Ahh und wenn ich schon den Thread aufgemacht habe, braucht man eig. den Referenzoperator beim einlesen eines Strings in C mithilfe von scanf !?
Also:
PHP:
char s[9];
scanf("%8s", s);
Auch wenn es bereits beantwortet ist: Nein. Es ist üblich bei Arrays den Adressoperator nicht zu verwenden, da für alle Arrayvariablen a gilt:
C:
a == &a
Die Adresse einer Arrayvariablen ist sozusagen das Array selbst. Oder anders ausgedrückt hat der Adressoperator bei Arrays keine Wirkung.

Gruß
 
@deepthroat

Vielen Dank für die Antwort !
Also gehe ich jetzt davon mal aus das die Seiteneffekte auch wenn voneinander abhängig sind so funktionieren :)
 
Zurück