*(p2 + x)
=================
Int ist richtig, allerdings muss es nicht zwangsweise zu einem Uebertrag kommen. Die Kurzschreibweise waere p2[x]
Ev. solltest du dir auch noch die Lang-Schreibweise von foo->bar ueberlegen.
p1 == p3 ? f1 : pf
=================
Wenn die Addresse von p1 gleich der von p3 it, dann ist das Ergebnis f1, und wenn nicht pf. Da ich keinen Hinweis darauf finde, dass p1 == p3 ist, wuerde ich also zum Typen von pf hin tenieren.
Diesen Operator kannst du ir auch so vorstellen:
int foo;
if (1) foo = 1;
else foo = 2;
foo = (1)? 1 : 2;
!p2
=================
klingt richtig.
*p1 && p1
=================
int ist schon mal richtig. Wenn das Zeichen der aktuellen Speicheraresse entspricht, dann ist das Ergebnis 1, sonst 0. Also, jop. (EDIT: nah, nicht ganz. Ich hab da &, anstatt * gelesen gehabt. int stimmt trotzdem.)
s || x -> jop
=================
Korrekt.
pf2 == f3
=================
Korrekt.
s | x
=================
long int ist mindestens so lang, wie int, kann aber groesser sein.
unsigned int ist so gross, wie eine int.
dem logischen Operator ist die Zahlendarstellung egal. Somit wird es der groessere Typ sein. Dieser Typ entspricht immer der Groesse von long int.
pf = f1
=================
typeof (pf)
pf2 = f3
=================
typeof (pf2)
Ich schau spaeter noch mal ueber meinen Beitrag, ob stimmt, was ich jetzt auf die Schnelle geschrieben habe. Ich muss aber erstmal weg ^^"
\Drakes:
Void wird streng genommen nicht zurueck gegeben. Schau dir mal den Call in asm an.