Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
c:expr:start [2008/10/10 22:45]
xin von C:Ausdrücke übernommen
c:expr:start [2022/09/22 19:58] (aktuell)
Zeile 5: Zeile 5:
 ===== atomare Ausdrücke ===== ===== atomare Ausdrücke =====
  
-Atomar bedeutet unteilbar, also nicht weiter ​zelegbar. Der Wert ist direkt ablesbar und es muss nicht mehr gerechnet werden:+Atomar bedeutet unteilbar, also nicht weiter ​zerlegbar. Der Wert ist direkt ablesbar und es muss nicht mehr gerechnet werden:
  
 Einige Beispiele: Einige Beispiele:
Zeile 63: Zeile 63:
  
 ==== mathematische Ausdrücke ==== ==== mathematische Ausdrücke ====
-Der Ausdruck ''​4 + 32''​ ist nicht mehr atomar, der Wert des Ausdrucks ist nicht mehr direkt abzulesen, da der Computer muss ihn zunächst noch berechnen. Der Wert ist entsprechend 36. Das wird ein moderner Compiler während des compilierens ​einmal ausrechnen und nicht während das Programm abläuft, wichtig ist jedoch, dass der Ausdruck erst zusammengefasst werden muss, er also einen Operator enthält. Bei ''​4 + 32''​ werden zwei Integerzahlen mit Hilfe der Addition miteinander verknüpft, das Ergebnis ist wieder ein Integer: 36.+Der Ausdruck ''​4 + 32''​ ist nicht mehr atomar, der Wert des Ausdrucks ist nicht mehr direkt abzulesen, da der Computer muss ihn zunächst noch berechnen. Der Wert ist entsprechend 36. Das wird ein moderner Compiler während des kompilierens ​einmal ausrechnen und nicht während das Programm abläuft, wichtig ist jedoch, dass der Ausdruck erst zusammengefasst werden muss, er also einen Operator enthält. Bei ''​4 + 32''​ werden zwei Integerzahlen mit Hilfe der Addition miteinander verknüpft, das Ergebnis ist wieder ein Integer: 36.
 Die Schreibweise,​ wie ein Integer geschrieben ist, spielt dabei keine Rolle: ''​4 * 0x20''​ entspricht ''​4 * 32'',​ das Ergebnis ist also ein Integer mit dem Wert 128. Auch ASCII-Zeichen lassen sich so verbinden: Weiß man, dass man ein ASCII-Zeichen hat, das eine Ziffer enthält, so kann man einfach ''<​nowiki>'​0'</​nowiki>''​ abziehen. ''<​nowiki>'​4'</​nowiki>''​ hat den Wert 52, zieht man davon ''<​nowiki>'​0'</​nowiki>'',​ also 48, ab, so erhält man den Integer-Wert 4. Die Schreibweise,​ wie ein Integer geschrieben ist, spielt dabei keine Rolle: ''​4 * 0x20''​ entspricht ''​4 * 32'',​ das Ergebnis ist also ein Integer mit dem Wert 128. Auch ASCII-Zeichen lassen sich so verbinden: Weiß man, dass man ein ASCII-Zeichen hat, das eine Ziffer enthält, so kann man einfach ''<​nowiki>'​0'</​nowiki>''​ abziehen. ''<​nowiki>'​4'</​nowiki>''​ hat den Wert 52, zieht man davon ''<​nowiki>'​0'</​nowiki>'',​ also 48, ab, so erhält man den Integer-Wert 4.
  
-==== boolische ​Ausdrücke ====+==== bool'​sche ​Ausdrücke ====
  
 Auch Vergleichsoperationen liefern Werte zurück, die als Integer lesbar sind. 7 > 8 ist ''​false''​ und die Integerentsprechung von ''​false''​ ist 0. 7 > 8 liefert also 0 zurück. '​0'​ == 48 ist ''​true'',​ als Integer wird 1 zurückgegeben. Das funktioniert selbstverständlich auch mit Variablen, so dass ''​x == 7''​ entweder 1 oder 0 zurückgibt,​ je nachdem ob x den Wert 7 besitzt. Auch Vergleichsoperationen liefern Werte zurück, die als Integer lesbar sind. 7 > 8 ist ''​false''​ und die Integerentsprechung von ''​false''​ ist 0. 7 > 8 liefert also 0 zurück. '​0'​ == 48 ist ''​true'',​ als Integer wird 1 zurückgegeben. Das funktioniert selbstverständlich auch mit Variablen, so dass ''​x == 7''​ entweder 1 oder 0 zurückgibt,​ je nachdem ob x den Wert 7 besitzt.
-Auch boolische ​Ausdrücke werden so berechnet: 0 entspricht ''​false'',​ 1 entspricht ''​true''​ und ''​true && false''​ ergibt ''​false''​ als Wert für den Ausdruck.+Auch bool'​sche ​Ausdrücke werden so berechnet: 0 entspricht ''​false'',​ 1 entspricht ''​true''​ und ''​true && false''​ ergibt ''​false''​ als Wert für den Ausdruck.
 Der ''​not''​-Operator dreht den Wahrheits-Wert um: als ''​true''​ wird ''​false''​ und umgekehrt. ''​!1''​ entspricht 0. Da alles, was nicht 0 ist als ''​true''​ gewertet wird, entspricht ''​2''​ dem Wert ''​true''​. ''​!2''​ ergibt daher ''​false''​. 0 wird als ''​false''​ aufgegriffen,​ ''​!0''​ wird daher zu true, was als 1 zurückgegeben wird. Der ''​not''​-Operator dreht den Wahrheits-Wert um: als ''​true''​ wird ''​false''​ und umgekehrt. ''​!1''​ entspricht 0. Da alles, was nicht 0 ist als ''​true''​ gewertet wird, entspricht ''​2''​ dem Wert ''​true''​. ''​!2''​ ergibt daher ''​false''​. 0 wird als ''​false''​ aufgegriffen,​ ''​!0''​ wird daher zu true, was als 1 zurückgegeben wird.
  
-Ausdrücke, die mit Wahrheitswerten arbeiten werden ​boolische ​Ausdrücke genannt. ​Boolische ​Ausdrücke geben boolische ​Werte zurück (''​true''​ oder ''​false''​),​ die aber als Integer abgebildet werden können (1 oder 0).+Ausdrücke, die mit Wahrheitswerten arbeiten werden ​bool'​sche ​Ausdrücke genannt. ​Bool'​sche ​Ausdrücke geben bool'​sche ​Werte zurück (''​true''​ oder ''​false''​),​ die aber als Integer abgebildet werden können (1 oder 0).
  
 ==== Zuweisungen ==== ==== Zuweisungen ====
Zeile 108: Zeile 108:
 x = 4 + 3 x = 4 + 3
 </​code>​ </​code>​
-verkürzt ​zurde und so auch in C einzug ​fand. Das ganze funktioniert dann allerdings nur, wenn die Setter-Operatoren erst die rechte Seite auswerten.+verkürzt ​wurde und so auch in C Einzug ​fand. Das ganze funktioniert dann allerdings nur, wenn die Setter-Operatoren erst die rechte Seite auswerten.
  
 ==== Besonderheit logische Verknüpfungen ====  ==== Besonderheit logische Verknüpfungen ====