Vergleichsoperatoren in C
Der Kleiner-Operator »<«
Vereinfachte Syntax
Ausdruck
.----------. .-. .----------.
--->| Ausdruck |--->( < )-->| Ausdruck |--->
'----------' '-' '----------'
Die mathematische Schreibweise dieses Operators ist ‹<› (also genauso wie in C ).
Aussprache
Der Operator wird „kleiner“, „kleiner als“ oder „ist kleiner als“ gesprochen.
Semantik
#include <stdio.h>
int main( void )
{ printf( "%d\n", 1 < 2 ); /* 1 */
printf( "%d\n", 2 < 2 ); /* 0 */
printf( "%d\n", 2 < 1 ); /* 0 */ }
Bei diesem Operator können aber auch Vergleiche mit Gleitkommawerten sinnvoll sein.
#include <stdio.h>
int main( void )
{ printf( "%d\n", 1.0 < 2.0 ); /* 1 */
printf( "%d\n", 2.0 < 2.0 ); /* 0 */
printf( "%d\n", 2.0 < 1.0 ); /* 0 */ }
Zum lexikographischen Vergleich von Zeichenfolgen kann die Funktion »strcmp« (eventuelle in Kombination mit Vergleichsoperatoren) verwendet werden.
Der Größer-Operator »>«
Aussprache
Der Operator wird „größer“, „größer als“ oder „ist größer als“ gesprochen.
Semantik
#include <stdio.h>
int main( void )
{ printf( "%d\n", 1 > 2 ); /* 0 */
printf( "%d\n", 2 > 2 ); /* 0 */
printf( "%d\n", 2 > 1 ); /* 1 */ }main.c
#include <stdio.h>
int main( void ){ printf( "%d\n", 4 > 3 > 2 ); }
stdout
0
Der Operator »<=«
Aussprache
Der Operator wird „kleiner-gleich“, „kleiner oder gleich“ oder „ist kleiner als oder gleich groß wie“ gesprochen.
Semantik
#include <stdio.h>
int main( void )
{ printf( "%d\n", 1 <= 2 ); /* 1 */
printf( "%d\n", 2 <= 2 ); /* 1 */
printf( "%d\n", 2 <= 1 ); /* 0 */ }
Der Operator »>=«
Aussprache
Der Operator wird „größer-gleich“, „größer oder gleich“ oder „ist größer als oder gleich groß wie“ gesprochen.
Semantik
#include <stdio.h>
int main( void )
{ printf( "%d\n", 1 >= 2 ); /* 0 */
printf( "%d\n", 2 >= 2 ); /* 1 */
printf( "%d\n", 2 >= 1 ); /* 1 */ }main.c
#include <stdio.h>
void stern(){ printf( "*" ); }
void sterne( int const n )
{ if( n > 0 )stern();
if( n > 1 )stern();
if( n > 2 )stern();
if( n > 3 )stern(); }int main( void )
{ sterne( 2 ); sterne( 1 ); puts( "" ); }stdout
***
main.c
#include <stdio.h>
#include <limits.h>
int main()
{ int n = INT_MAX;
printf( "%d, %d\n", n + 1 > n, INT_MAX + 1 > INT_MAX ); }
- transcript
1, 0
Übungsfragen
Welche Anweisung muß man am Ende des Rumpfs der Deklaration der Funktion »stern« noch hinzufügen, damit diese nicht nur bis zum Wert 4, sondern bis zu beliebig großen Werten des Parameters n, n Sterne ausgibt?
- / Äquivalenz-Umformungen (Refaktoren)
- Geben Sie zu den folgenden Ausdrücken jeweils einen Ausdruck mit gleichem Wert, aber weniger Operatoren an. Beispiel: Dem Ausdruck »!( x == y )« ist der Ausdruck »x != y« gleichwertig, enthält aber weniger Operatoren (einen Operator statt drei Operatoren).
!( x != y )
!( x < y )
!( x <= y )
!!( x >= y )
Übungsaufgaben
- / Zuschuß ermitteln
- Eine Person erhalte beim Bausparen einen Zuschuß von 7 % pro Jahr bis zu einer Sparleistung von 1000 Euro pro Jahr. (Es kann zwar mehr gespart werden, der über 1000 Euro hinausgehende Teil werde aber nicht mehr bezuschußt.) Schreiben Sie eine Funktion, die zu jeder Sparleistung (auch über 1000 Euro pro Jahr) den jährlichen Zuschuß berechnet. (700 -> 49, 4000 -> 70 ).
Übungsaufgaben
Schreiben Sie eine Funktion, welche das Maximum zweier Werte ergibt.