"Einfache" Probleme
-
Hallo zusammen,
Ich bin ziemlich neu in der Welt der "C" Programmierung unter Linux. Ich habe mal ein paar AUfgaben versucht zu lösen und bin auf foldende Probleme gestossen: Klammern & Types.
Hier wären z.B. solche Fragen: Wo kann man die Klammern weglassen?
- a = (x + 5)
- a = (x = y) + 2
- a = (x == y)
- (a>b) && (c<d)
Natürlich habe ich es einfach mal ausprobiert, aber leider keine sinnvollen Resultate bekommen. Nach meinem Compiler könnte ich anscheinend alle Klammern weglassen, kommt mir aber sehr seltsam vor... Könnt ihr mir helfen?
Das andere Problem war (z.Glück) eher weniger dramatisch.
Gegeben: char c= '\01´
short int p = 10- p + 3 = ? (Resultat: short int)
- c + 1 = ? (Resultat: char)
- p + c = ? (Resultat: short int)
Die Zahlenresultate hab ich natürlich. Die Frage ist nur, ob meine Resultate bezüglich der Typen stimmen. Wisst ihr das zufällig?
Wäre echt mega nett wenn mir jemand bei diesen kleinen Problemchen helfen könnte.
Lg
-
zu 1.
http://de.wikibooks.org/wiki/C-Programmierung:_Liste_der_Operatoren_nach_Prioritätzu 2.
stimmt glaube ichbtw. ist das kein Linux spezifisches Problem, sondern ein allgemeines C Problem!
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Linux/Unix in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Zu zwei: Afaik werden Ganzzahltypen nach int umgewandelt, bevor sie miteinander verrechnet werden, also dürften alle drei Ausdrücke den Typ 'int' haben (bei 1 und 2 bin ich mir da sogar sicher - du addierst einen short/char mit einem int-Literal). Aber in der Praxis sollte das keinen großen Unterschied machen, da du alle Ganzzahltypen ineinander umwandeln kann (eventuell bekommst du eine Warnung vom Compiler).
-
CStoll schrieb:
Zu zwei: Afaik werden Ganzzahltypen nach int umgewandelt, bevor sie miteinander verrechnet werden, also dürften alle drei Ausdrücke den Typ 'int' haben
Jup, ist so. Etwas Kauderlwelsch aus dem Standard:
If an int can represent all values of the original type, the value is converted to an int; otherwise, it is converted to an unsigned int. These are called the integer promotions.48) All other types are unchanged by the integer promotions.
- The integer promotions are applied only: as part of the usual arithmetic conversions, to certain argument expressions, to the operands of the unary +, -, and ~ operators, and to both operands of the shift operators, as specified by their respective subclauses.