C/C++:Was Beduetet x?y:z

Hm ich muss dazu sagen, ich hab ehrlich gesagt einfach mal auf gut Glück gepostet - kenne das nämlich nur von PHP. :) Und da gibt es ja dieses PEAR-Reglement, in dem davon abgeraten wird, diese Syntax zu verwenden - gibt es so einen Styleguide eigentlich auch für C/C++? Und steht da was diesbezüglich drin? Weil wenn die Anweisungen nur kurz sind, erachte ich es durchaus auch als sinnvoll, die Kurzschreibweise zu verwenden, da der Code so übersichtlicher wird. (Aber eben wirklich nur bei kurzen Anweisungen! ;))
 
Ich finde, solange es kurz ist ist es in Ordnung.
Sowas finde ich unschön:

w=(a>b)?((a>c)?a:c):b;

Das ist einfach nur schwer zu entziffern.(naja es ist auch recht mystisch nicht :rolleyes: )
 
Naja, gewöhnungsbedürftig ist das schon!
Ja das geht, zu sehen an Folgendem Codestück


PHP-Code:
#include <iostream>

using namespace std;


int eins()
{
return
1;
}
int zwei()
{
return
2;
}
int main()
{
int x,y;
cin>>x;
y=x?eins():zwei();
if (
y==1){
cout<<"x ist ungleich null(true)";}
if(
y==2){
cout<<"x ist gleich null(false)";}
return
0;

}
Das Beispiel beschreibt sehr gut, was ich meinte.
Danke für eure Hilfe. Jetzt ist mir das schon auch nicht mehr unbekannt!
Ich lerne, und ich muss sagen, das Forum hilft ungemein dabei, danke an dieser Stelle an alle, die das können, und ihre Hilfe bereitwillig anbieten. Respekt!
 
Zum Thema "schwer zu entziffern":

Das folgende (einzeilige! ) Programm berechnet die ersten 100 Primzahlen und gibt diese auf dem Bildschirm aus:

Code:
for (int nx=2,nzahl=2, nmax=100; nzahl<=nmax;
  nx=nx*nx<=nzahl ? nzahl % nx ? ++nx : 2 + !++nzahl :
  2 + !printf ( "%8i",nzahl++));
 
Frankdfe hat gesagt.:
Zum Thema "schwer zu entziffern":

Das folgende (einzeilige! ) Programm berechnet die ersten 100 Primzahlen und gibt diese auf dem Bildschirm aus:

Das liegt wohl nur daran, dass Du die Variablennamen sehr unklug benannt hast!
An kryptischem C++ Code ist der Programmierer immer Schuld (ok bis auf verschachtelte Mehrfachzeiger), da spielt die Benennung der Variablen eine sehr grosse Rolle.
 
Hallo,

MPNuts hat gesagt.:
Hallo,

Nur wegen fauler Programierer...

Vorteil von dem ?:-Operator ist das der R- und L-Value ist sprich der ist links und rechts vom = zu gebrauche. Reduziert die Menge des Quell-Codes extrem wenn man den richtig anwendet.

Gruß Michael
 
Gibt es ne Faustformel, wann ich am besten was benutze, oder könnt ihr mir Kriterien nennen, nachdenen ich entscheiden kann?
 
Ich würd mal sagen, wenn's von der Geschwindigkeit her keinen Vorteil bringt , solltest dus nur verwenden, wenn du es später auch wider enziffern kannst.
Denn es bringt ja keine Vorteile, warum also den Code unleserlich machen, wenns auch anders geht?
Sollte es aber wie im beispiel:
z=(a>b)? a:b;


sein, dann solltest du es verwenden, weil dein Quellcode dann schön kurz und knackig bleibt :rolleyes:
 
Naja, bisher ist in meinem Code noch so ziemlich garnichts kurz und knackig, aber ich denke, das gefühl dafür kommt mit der Zeit! Hoffe ich!
 
Ich habe damit jetzt mal etwas probiert, und jetzt sind mir da wieder einige Dinge aufgefallen,
Sehe ich das richtig, dass ich immer nur Funktionen aufrufen kann, oder einen Wert zuweisen? Also wie in dem Bsp oben.
Und kann es sein, dass ich auch immer einen "else"-Zweig brauche, denn das funktioniert nicht
(x>100)?break;

Gibt es eine Möglichkeit so etwas mit dieser Syntax zu beschreiben?
Und wie bilde ich Anweisungsblöcke? Wie Klammer ich sie?
 

Neue Beiträge

Zurück