Ein Operator mit drei Operandenstellen wird ternärer Operator genannt.
In C++ gibt es genau einen ternären Operator, der deshalb auch der ternäre Operator genannt wird.
Syntax
Zwischen dem ersten und dem zweiten Operanden wird ein Fragezeichen »?« geschrieben, zwischen dem zweiten und dem dritten Operanden wird ein Doppelpunkt »:« geschrieben.
Die Priorität dieses Operators ist schwächer als die aller anderen bisher behandelten Operatoren außer der Zuweisung.
Typregeln
Wir behandeln hier zur Vereinfachung noch nicht die alle Typregeln, sondern beschränken uns auf Fälle, in denen der Typ des Ausdrucks vor dem Fragezeichen »int« ist und die Typen der beiden anderen Ausdrucke gleich sind.
Die behandelten Fälle (Signaturen)
int ? int : int
int ? double : double
int ? ::std::string : ::std::string
Semantik
Der Wert eines solchen Ausdrucks ist der Wert des Ausdrucks vor dem Doppelpunkt »:«, falls der Wert des ersten Ausdrucks nicht gleich 0 ist, sonst ist es der Wert des Ausdrucks nach dem Doppelpunkt »:«.
Beispiel zum ternären Operator
In dem Programm »main.cpp"« ergibt sich als Wert des Ausdrucks »( 0 ? 1 : 2 )« der Wert »2«, denn da der Wert des Operanden vor dem Fragezeichen der Wert »0« ist, ist der Wert des gesamten Ausdrucks der Wert des Operanden nach dem Doppelpunkt »:«. Der Wert des zweiten bedingten Ausdrucks ist der Wert »4«, denn da der Wert des ersten Operanden der Wert »3« ist, ist der Wert des ganzen Ausdrucks der Wert des Operanden vor dem Doppelpunkt.
Diese Übungsaufgaben sollten möglichst ohne Vorgriffe, also mit den bisher behandelten Sprachelementen gelöst werden.
/ Eine willkürliche Funktion
Schreiben Sie eine Funktion, die 17 ergibt, falls ihr Argumentwert 0 ist, und sonst 12.
/ Eine willkürliche Funktion (1)
Schreiben Sie eine Funktion, die 17 ausgibt, falls ihr Argumentwert 0 ist, und sonst 12. Verwenden Sie dazu die Lösung der vorigen Übungsaufgabe, ohne diese zu verändern.
/ Eine willkürliche Funktion (2)
Schreiben Sie eine Funktion, die 17 ergibt, falls ihr Argumentwert 7 ist, und sonst 12.
Zusatzaufgaben
Diese Zusatzaufgaben sollten möglichst ohne Vorgriffe, also mit dem bisher behandelten Sprachelementen gelöst werden. (Da der Autor selber noch nicht alle Aufgaben bearbeitet hat, ist es nicht sicher, daß sich alle auf diese Weise lösen lassen. Es wird aber erwartet, daß dies möglich ist.)
/ Die Fakultät
Definieren Sie eine Funktion zur Berechnung der Fakultät einer natürlichen Zahl »n«, die der folgenden mathematischen Definition möglichst nahekommt.
Mathematische Definition der Fakultät
.- | n * f( n - 1 ), falls n nicht 0 ist f( n ) = < | 1, sonst '-
/ Eine willkürliche Funktion (2)
Schreiben Sie eine Funktion, die 17 ergibt, falls ihr Argumentwert 4 ist, und 12, falls ihr Argumentwert 6 ist.
/ Normalisierung
Definieren Sie eine Funktion, die 0 auf 0 und alle anderen Werte auf 1 abbildet.
/ Verneinung
Definieren Sie eine Funktion, die 0 auf 1 und alle anderen Werte auf 0 abbildet.
/ Und-Verknüpfung
Definieren Sie eine Funktion, die 1 ergibt, wenn beide Argumente ungleich 0 sind, und 0 sonst.
/ Oder-Verknüpfung
Definieren Sie eine Funktion, die 0 ergibt, wenn beide Argumente gleich 0 sind, und 1 sonst.
/ exklusive oder-Verknüpfung
Definieren Sie eine Funktion, die 1 ergibt, wenn beide Argumente einander ungleich sind, und Null sonst. Hierfür kann angenommen werden, daß als Argumentwerte nur 0 und 1 vorkommen.
/ Gleichheit
Definieren Sie eine Funktion, die 1 ergibt, wenn beide Argumente einander gleich sind, und Null sonst. Hierfür kann angenommen werden, daß als Argumentwerte nur 0 und 1 vorkommen.
/ Negativ *
Definieren Sie eine Funktion, die 1 ergibt, wenn ihr Argument negativ ist. Hierzu müssen Sie sich aber vermutlich noch passende Aufrufe aus der Standardbibliothek heraussuchen.
/ Kleiner *
Definieren Sie eine Funktion, die 1 ergibt, wenn das erste Argument kleiner ist als das zweite. Hierzu müssen Sie sich aber vermutlich noch passende Aufrufe aus der Standardbibliothek heraussuchen.
Beispiel Verschachtelung ternärer Operatoren *
Das folgende Beispiel zeigt, wie zwei ternäre Operatoren ineinander verschachtelt werden können.
int main() { auto a{ 0 }; /* C++17 */ auto b{ 0 }; /* C++17 */ ( 0 ? a : b )= 1; ::std::cout << a << "\n"s; ::std::cout << b << "\n"s; }
::std::cout
0 1
Beispiel Ausgabe einer bestimmten Anzahl von Zeichen *
Das folgende Beispiel zeigt eine Funktion, welche so viele Sterne ausgibt, wie der Wert ihres Parameters angibt. Auch so etwas konnten wir mit den bisher vorgestellten Sprachelementen noch nicht programmieren.
Um dies zu verstehen, spiele man zunächst gedanklich den Aufruf der Funktion »stern« mit dem Argumentwert »0« durch. Daraufhin den mit »1« und so weiter.
Eine aktive Funktion darf sich auch selber aufrufen. Allerdings sollten solche Selbstaufrufe von Funktionen nicht zu tief verschachtelt erfolgen, da dies sonst zu Störungen führen kann. Es ist durch die C++-Norm leider nicht genau bestimmt, wie tief die Verschachtelung bei solchen Selbstaufrufen sein darf. Bei einigen Implementationen kann der Programmierer dies einstellen.
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 stefanram720819 stefan_ram:720819
C++: Fragezeichen, Doppelpunkt: bedingte Auswertung
bedingte Auswertung, Rekursion, rekursives Programmieren,
source, source code,sourcecode,
Programmier sprache C++ Sprache,
C++, CXX, C+, Programm, Programme,
C++-Programm C++ Sprache C++ Programmiersprache C++
c++-Programme, Standard C++,
Programmieren in C++,
Programmieren in CXX,
Programmieren in CPP,
Programmieren in Cplusplus,
Die Programmiersprache C++,
Die Programmiersprache CXX,
Die Programmiersprache CPP,
Die Programmiersprache Cplusplus,
Die Programmier sprache C++,
Die Programmier sprache CXX,
Die Programmier sprache CPP,
Die Programmier sprache Cplusplus,
CXX-Programmierung,
C++-Programmierung,
CPP-Programmierung, c-plus-plus,
cpluplus-Programmierung,
ANSI-C++, ANSI-CXX, ANSI-CPP, ANSI C++, ANSI CXX, ANSI-cpluscplus
ISO-C++, ISO-CXX, ISO CPP, ISO C++, ISO CXX,
ISO/IEC-C++, ISO/IEC-CXX, ISO/IEC CPP, ISO/IEC C++, ISO/IEC CXX,
IEC-C++, IEC-CXX, IEC CPP, IEC C++, IEC CXX,
International Standard ISO/IEC 14882 First edition 1998-09-01,
ISO/IEC 14882:1998(E),
ISO/IEC 14882:2003(E),
ASC X3, 7/27/98,
c plus plus, C ++,
cplusplus, c plus plus,
Standard C+ programmieren, Stamdard C++ programmieren,
Standart C+ programmieren, Stamdart C++ programmieren,
INCITS/ISO/IEC 14882-1998,
Information Technology - Programming Languages - C++ (formerly ISO/IEC 14882-1998),
Programmieren in C++,Programmiersprache C++ CPP CXX Cplusplus c plus plus
International Standard ISO/IEC 14882 First edition 1998-09-01,
Softwareentwicklung, Software-Entwicklung, Software Entwicklung,
Softwareprogrammierung, Software-Programmierung, Software Programmierung,
Softwareherstellung, Software-Herstellung, Software Herstellung,
Softwareerstellung, Software-Erstellung, Software Erstellung,
Softwareengineering, Software-Engineering, Software Engineering,
Softwareenginering, Software-Enginering, Software Enginering,
Softwaremethodik, Software-Methodik, Software Methodik,
Programmiermethodik, Programmier-Methodik, Programmier Methodik,
Softwaredidaktik, Software-Didaktik, Software Didaktik,
Methodik des Programmierens,
Didaktik des Programmierens,
Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens,
Programmieren, Programmierung,
Computer Science, Informatik,
Informatik, Informationspädagogik, Informationspaedagogik,
Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen,
Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still,
,
Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz,
lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung,
Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training,
WBT,
Net Based Training,
NBT,
computer based training,
CBT,
virtual learning environment,
virtual university,
für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie,
Onlineacademie,
Onlineakademie,
Wissen,
Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat,
Referate,
Hausaufgabe,
Hausaufgaben, Tip,
Tipp.
Tipps und Tricks,
Tips und Tricks, Methode,
Methoden,
Methodik, Funktion,
Funktionsweise,
Aufbau,
Prinzip,
Grundlage,
Grundlagen, Internetschulung,
Unterlage,
Unterlagen, Struktur,
Frage,
Fragen,
Antwort,
Antworten,
Schulunterricht,
zum erlernen,
was ist das?,
wie?,
lerne,
Onlineausbildung,
Onlinelehrgang,
Onlinekurs,
Onlinebuch,
Webbuch,
Academy,
Fachhochschule,
FH,
TFH,
Hochschule,
Universität,
Universitaet,
Uni,
Schule,
Berufsschule,
Gymnasium,
Erste Schritte mit,
Dozent,
Dozenten,
Zusammenfassung,
Übersicht,
Term,
Fachwort,
Fachbegriff,
Fachbegriffe,
Grundbegriff,
Grundbegriffe,
Lektion,
Lektionen,
Bedienungsanleitung,
Bedienungsanleitungen,
Spezialist,
Spezialisten,
Coaching,
Coach,
Fachbuch,
technologie,
Unterschied zwischen,
Unterschiede zwischen,
lehren,
unterrichten,
für das Studium,
für Studenten,
für Studentinnen,
für Studierende,
für Schüler,
für Schülerinnen,
Wie kann ich,
Wie kann man,
Hilfe,
selber,
erstellen,
Erstellung,
Beginner,
Online-Seminar,
Online-Kurs,
Online-Schulung,
ich,
gebrauchsanweisung,
gebrauchsanleitung,
Bedienungsanweisung,
Einweisung,
Kurzinfo,
Internet-Kurs,
Internet-Kurse,
Online-Training,
Intensiv,
Intensivkurs,
Vortragsreihe,
Präsentation,
Grundzüge,
Mitschrift,
Mitschriften,
Verständnis,
verstehen,
anwenden,
Hintergrundwissen,
Hintergrund,
Hintergründe,
content,
Funktionsprinzip,
Schritt für Schritt;
E-Learning;
elearning;
online learning;
Fernlehre,
Fernlehrgang,
Fernlehrgänge,
Referent,
Referenten,
Fernkurs,
Fernkurse,
Fernstudium,
Fernschule,
Fernuniversität,
Fernlehrer,
Denken,
Qualifizierungsmaßnahme,
Qualifizierung,
Qualifizierungen,
Volkshochschulkurs,
Volkshochschulkurse,
Internet-Learning-Plattform,
Online-Learning-Plattform,
E-Learning-Plattform,
Internetlearning-Plattform,
Onlinelearning-Plattform,
Elearning-Plattform,
jetzt,
Kochbuch,
einfach erklärt,
Kenntnis,
Kenntniss,
Kenntnisse,
deutsche Hilfe,
lernen und verstehen;
blended learning;
courseware,
Profi,
Profis,
professionell,
professionelle,
professionelles,
profesionell,
profesionelle,
profesionelles,
professionel,
gekonnt,
für Könner,
Grundkurs,
Leistungskurs,
Aufbaukurs,
Lehrtext,
Lehrtexte,
Fachtext,
Fachtexte,
Ausarbeitung,
distance learning,
Online Seminar,
distance education,
Online Tutorium,
Online Tutorien,
technology-based learning,
Computer based learning,
CBL,
Internet Based learning,
IBL,
Web based learning,
WBL,
online-learning,
OL,
online-training,
OT,
CAI,
Computer Assisted Instruction,
CUU,
Computerunterstützter Unterricht,
Computer-unterstützter Unterricht,
Know how,
Grundkenntnis,
Grundkenntnisse,
Kompetenz,
Schulungsunterlagen,
Insiderwissen,
Rat,
Lehrerinnen und Lehrer,
ABC,
Überblick,
Arbeitsblatt,
Sekundarstufe,
Oberstufe,
Material,
Materialien,
Unterrichtsentwurf,
Unterrichtsentwürfe,
Lerntip,
Lerntips,
Lerntipp,
Lerntipps,
ebook,
schnell lernen,
Lerner,
Lernender,
Lernende
Erwachsenenbildung,
Frage und Antwort,
Selbststudium,
Selbstudium,
Umschulung,
,
kostenlos, kostenlose, kostenloses,
kosten los, kosten lose, kosten loses,
gratis,
free, frei, freie, freies,
privat, private, privates, homepage, home-page, home page,
website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite,
Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel,
online, on-line, on line,
download downloaden, down load, or,
deutsch, deutsche, deutsches, deutscher,
Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges,
german, germany, and,
uebersicht, Uerbersicht, uebersichten, Uebersichten,
Übersicht, übersicht, Übersichten, übersichten,
Uebersicht, uebersicht, Uebersichten, uebersichten,
Info, Infos zu, Information über, ueber, Informationen über,
Auskunft, Auskünfte, Auskuenfte,
Dienst, PbclevtugFgrsnaEnz,
Angebot, Angebote, Anbieter,
server, für, fuer, in, an, keyword, keywords, key word, keywords,
internet, internets, net, network, net work, networks, net works,
web, www, world wide web,
Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar,
computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon,
computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon,
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
was ist ein, was ist das, was sind, definiere, definition, define,
Inhalt, html, xhtml, free im netz, PDF
Text, digital, digitale, binär, binäre, elektronisch, elektronische,
fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines,
Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen;
,
Stefan Ram, Berlin, and, or, near, uni, online,
slrprd, slrprdqxx, slrprddoc, slrprd720819, slrprddef720819, 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/c++_alternative_de