Die bedingte Ausführung in C (Die bedingte Ausführung in C), Lektion, Seite 723197
https://www.purl.org/stefan_ram/pub/bedingte_ausfuehrung_c (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C-Kurs

Die if-Anweisung zur Steuerung in C 

Semantik (Verhalten) der bedingten Ausführung

Syntax-Diagramm
Anweisung
.--. .--. .----------. .--. .-----------.
--->( if )--->( ( )--->| Ausdruck |--->( ) )--->| Anweisung |--->
'--' '--' '----------' '--' '-----------'

Bei der Ausführung einer Anweisung dieser Art wird zunächst der Ausdruck ausgewertet.

Die innere Anweisung wird genau dann ausgeführt, wenn der Ausdruck eine Zeichenfolge ist oder die Auswertung einen anderen  Wert als »0« oder »0.0« ergab.

Daher bezeichnen wir den Ausdruck auch als die Bedingung  und die innere Anweisung als die Konsequenz  der if-Anweisung.

Wahrheitskontexte

Man sagt auch, daß der Ausdruck in einem Wahrheitskontext  ausgewertet werde, weil bei der Verwendung des Werts des Ausdrucks nur die beiden Möglichkeiten „Null“ oder „nicht Null“ unterschieden werden, die oft als „falsch“ beziehungsweise „wahr“ interpretiert werden. Ein Zeichenfolgenliteral gilt dabei immer als „wahr“. Mit dieser Sprechweise kann man dann einfach sagen:

Die innere Anweisung wird genau dann ausgeführt, wenn der Ausdruck wahr ist.

Beispiele

Das folgende Beispiel zeigt, wie die innere Anweisung nur dann ausgeführt wird, wenn der Ausdruck nicht  gleich »0« ist.

main.c

#include <stdio.h>

int main( void )
{ if( 0 )printf( "%d\n", 0 );
if( -2 )printf( "%d\n", -2 ); }

stdout
-2

Die Anweisung wird also nur unter einer bestimmten Bedingung ausgeführt – sie wird bedingt  ausgeführt.

Übungsfragen

?   Übungsfrage

Welche Ausgabe erzeugt das folgende Programm?

main.c

#include <stdio.h>

int main( void )
{ if( 0 )printf( "A\n" ); printf( "B\n" );
if( 1 )printf( "C\n" ); printf( "D\n" ); }

?   Übungsfrage

Welche Ausgabe erzeugt das folgende Programm?

main.c

#include <stdio.h>

int main( void )
{ if( -7 )printf( "A\n" ); printf( "B\n" );
if( 0 )printf( "C\n" ); printf( "D\n" );
if( +3 )printf( "E\n" ); printf( "F\n" ); }

Zeichenfolgenliteral als Ausdrücke *

Das folgende Beispiel zeigt, daß die innere Anweisung immer  ausgeführt wird, wenn der Ausdruck ein Zeichenfolgenliteral als Wert hat.

main.c

#include <stdio.h>

int main( void )
{ if( "" )printf( "%s\n", "(leer)" );
if( "a" )printf( "%s\n", "a" );
if( "0" )printf( "%s\n", "0" ); }

stdout
(leer)
a
0

Zeichenfolgenliteral spielen an dieser Stelle in der Praxis allerdings keine Rolle.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723197 stefan_ram:723197 Die bedingte Ausführung in C Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723197, slrprddef723197, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/bedingte_ausfuehrung_c