seit wann ist das möglch? Ich habe hier etliche Cüü Bücher..und in einem, habe ich das heute gsehen, und weshalb man unbedingt immer {} benutzen soll!! ISt es echt so, das C ständig Spielraum für Diskussionen hat, die völlig sinnfrei sind? Wieso geht es überhaupt ohne{} wenn es doch gefährlich ist, das zu tun?! In Basic, Pascal etc ist das meiste so.und fertig, es hat alles einen Grund. Wieso wird die Freiheit in C C++ Fehelr zu machen immer als Vorteil verkauft?
:
Verschoben durch Moderator
Siehst Du, in einer freien Welt darfst Du auch solche Trollfragen stellen.
Beitrag #5738814 wurde von einem Moderator gelöscht.
So schlampig, wie du die Überschrift hingerotzt hast, war die Antwort schon völlig passend…
noch eine dumme Antwort..also haben wir jetzt zwei sinnfreie kommentare und keinen sinnvollen.schon toll dieses Forum Genauso Anstatt eine Initialisierung mit dem Gleichheitszeichen durchzuführen, kann in C++ auch eine Klammer verwendet werden. Das obige Beispiel sähe in dieser Syntax so aus: int Einkommen(0); erklärt wieso hier auch () geht und welche Vor oder Nachteile das hat..steht natürlich nicht da..
:
Bearbeitet durch User
https://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Einf%C3%BChrung_in_C%2B%2B/_Variablen,_Konstanten_und_ihre_Datentypen#Variablen da steht, dass bei Variablen beide Arten möglich und gleichwertig sind
:
Bearbeitet durch User
und was ist mit int zahl{100}; // Möglichkeit 2 das steht da nicht..gibt es aber auch...und SOLL verwendet werden
:
Bearbeitet durch User
Und das der Mod diese Frage als Trollfrage bezeichnet, sagt sicher eine Menge über dessen C++ Kenntnisse... Offenbar muss er jetzt erstmal selber nachschlagen um zu raffen, weshalb die Frage gar nicht mal so trollig ist...arm... habs gerade mal getestet..scheinbar ist int a = 1; und int a = (1); tatsächlich gleichwertig..aber eben nicht int a = {1}; das ist offenbar wirklich die bessere Lösung, nur finde ich das kaum..selbst die angeblichen C++ Schlaumeier schreiben offenbar meist i = 1;
:
Bearbeitet durch User
Thomas M. schrieb: > habs gerade mal getestet..scheinbar ist > int a = 1; > und > int a = (1); > > tatsächlich gleichwertig..aber eben nicht > int a = {1}; Sondern? Wo ist der Unterschied im Ergebnis?
Wer wissen will, was anders ist..
1 | #include <iostream> |
2 | |
3 | using namespace std; |
4 | |
5 | int a = {1.3}; |
6 | int b = (1.3); |
7 | int c = 1.3; |
8 | |
9 | int main() |
10 | {
|
11 | cout<<("Die Variable lautet %d",a); |
12 | |
13 | return 0; |
14 | }
|
Bei {} wird geprüft ob es überhaupt zulässig ist..in diesem Fall meldet er einen Fehler, das 1.0 kein Int ist...bei allen anderen Lösungen merkt der Compiler nicht mal das die Zahl fehlerhaft ist....fatal..was mal wieder die Sicherheit von C++ angeht..dher halt die Frage, weshaln es ohne {} überhaupt zulässig ist und somit das viele einfach ohne nutzen ohne sich des Problems bewusst zu sein
:
Bearbeitet durch User
int zahl=100; // Möglichkeit 1 int zahl(100); // Möglichkeit 2 int zahl{100}; wäre dann Möglichkeit 3 int zahl=(100); wäre dann Möglichkeit 4 int zahl={100}; wäre dann Möglichkeit 5 Die sollen alle funktionieren und nur in einem Fall um eine Wertebereichsprüfung ergänzt sein? Können die sich nicht mal auf eine Variante einigen?
genau das ist ja meine Kritik..aber der Mod bezeichnet sowas als pro Pascal trollen oder sowas...wie gesagt..mag jeder selber seien Meinung zu so einem Mod haben... Ich denke jemanden der das als normal..bezeichnet hat nie wirklich mit Borland Pascal 6 oder 7 oder neuer gearbeitet Ich denke es war ihm auch gerade nicht so bewusst.. Du kannst es hier testen https://www.onlinegdb.com/online_c++_compiler# Sorry, sehe gerade int i = {1.9}; ist falsch..müsste dann ohne = sein Achne!!! ja stimmt.auch diese Varitaionen gehen..schon geil dieses C...
:
Bearbeitet durch User
Beitrag #5738880 wurde von einem Moderator gelöscht.
So ein dummes Geschwafel. Wenn man keine Ahnung von C++ hat, nur meckert und den anderen Forenteilnehmern eine derartig grausige Orthographie und Rechtschreibung zumutet, braucht man sich nicht über die Antworten zu wundern. (Die gewellten roten Linien im Testfenster des Webbrowser haben übrigens eine Bedeutung...) Zum Thema
1 | int b = (1.3); |
2 | int c = 1.3; |
Sind beides ganz normale Initialisierungen mit impliziter Typumwandlung. Und natürlich kann man dem Compiler sagen, das er eine Warnung ausspucken soll, wenn man das macht:
1 | andi@...:/tmp$ g++ -c -Wconversion -o test.o test.cc |
2 | test.cc:1:9: warning: conversion to ‘int’ alters ‘double’ constant value [-Wfloat-conversion] |
3 | int i = 1.5; |
Wenn dort nicht "int" stehen würde, sondern eine Klasse, dann wären die beiden Zeilen jedoch: - Rufe Konstruktor 'b' auf - Rufe den Zuweisungsoperator von 'b' auf
1 | int a (1.3); |
(Man beachte das fehlende '=') entspricht eher Instanzierung des Datentyps "int", bei fundamentalen Datentypen ist das identisch zu den oberen beiden, bei echten Klassen jedoch: - Rufe Konstruktor von a auf mit Parameter (1.3) Auch hier ist implizite Konvertierung möglich.
1 | int d {1.3}; |
Nennt sich Listeninitialisierung und ist historisch für Arrays gedacht, kann man seit neuestem aber auch für einzelne Variablen verwenden. Aber ein paar implizite Konvertierungen sind in dieser Notation nicht mehr zulässig. Ist im Standard eben so definiert.
1. bin ich Legasterniker..tut aber überhaupt nichts zur sache..aber hauptsache labern..ha tmit dem Thema nämlich 0 zu tun! Spar Dir jetzt zu erklären das ich so lange korriegiren könnte bis die Linien weg sind..ist nicht Deine Baustelle! Und für den Rest der Erklärung ..danke Was C dennoch nicht sympathischer macht..sondern mir nur wieder zeigt, das die Kritik daran berechtigt ist
Thomas M. schrieb: > bin ich Legasterniker. Das hindert dich nicht daran, deine Beiträge vor dem Absenden zumindest nochmal Korrektur zu lesen. Dann würden dir vielleicht Dinge auffallen, wie zwei Klammern, die nicht einmal ein Paar bilden. Da du dich ja gerade an den verschiedenen Varianten von Klammern hochziehst, ist das in diesem Falle durchaus nicht gerade unwesentlich. Außerdem kannst du dich in deinen Schreibereien ja nicht einmal festlegen, ob du nun C oder C++ meinst. Beides sind trotz ihrer ähnlichen Syntax zwei völlig verschiedene Sprachen, was sich eben auch gerade an dieser Stelle zeigt. Auch der Rest deiner Beiträge dieses Threads erweckt nicht den Eindruck, dass du dir beim Abfassen sonderlich viel Mühe gegeben hättest, und deine Wortwahl hinterlässt eben bei einem Außenstehenden nicht den Eindruck, dass es dir um sinnvolle Antworten, sondern nur um irgendein Herummotzen geht. Dann brauchst du dich über die Antworten, die du bekommst, auch nicht weiter wundern. Leute mit vernünftig gestellten Fragen bekommen hier in aller Regel auch vernünftige Antworten.
Thomas M. schrieb: > 1. bin ich Legasterniker..tut aber überhaupt nichts zur sache..aber > hauptsache labern..ha tmit dem Thema nämlich 0 zu tun! Richtig. Genauso wie Beleidigungen. > Was C dennoch nicht sympathischer macht..sondern mir nur wieder zeigt, > das die Kritik daran berechtigt ist Wie immer macht der Ton die Musik.
"Leute mit vernünftig gestellten Fragen bekommen hier in aller Regel auch vernünftige Antworten." ich denke das sehen seeehr viele Leute ganz anders..das Forum ist nicht für vernünftige Antworten oder guten Umgangston bekannt.. Des weitern hat es dennoch nicht in Offtopic zu tun..wenn der Fehler mit der Klammer so dramatisch ist, hätte man es ja editieren können, als Ersteller kann ich das jetzt nicht mehr!!
Thomas M. schrieb: > Und das der Mod diese Frage als Trollfrage bezeichnet, sagt sicher eine > Menge über dessen C++ Kenntnisse... Nein. Dein Eröffnungsbeitrag war so schlampig dahingerotzt, daß nur mit viel Mühe überhaupt erkennbar ist, worum es Dir gegangen sein könnte. Meine C++-Kenntnisse mögen bescheiden sein (nie behauptete ich gegenteiliges), aber Deine Fähigkeiten, einen Sachverhalt zu formulieren, sind absolut unterirdisch. Auch Deine angebliche Legasthenie, die Du vorschützt, ändert nichts daran. Es geht nicht um eine simple Rechtschreibschwäche.
:
Bearbeitet durch User
Beitrag #5738924 wurde von einem Moderator gelöscht.
Beitrag #5738927 wurde vom Autor gelöscht.
Beitrag #5738945 wurde von einem Moderator gelöscht.
Beitrag #5738972 wurde von einem Moderator gelöscht.
Falls es den TO atsächlich interessiert, warum C++ so viele Möglichkeiten der Initialisierung von Variablen hat, dann wird das z.B. Hier erklärt: https://m.youtube.com/watch?v=7DTlWPgX6zs (nicht mein Lieblingsredner und nicht ohne Vorkenntnisse verdaubar) Grundlage ist wie immer, daß Verbesserungen am Sprachstandard nicht Jahrzehnte an Sourcecode invalidisieren sollen. Deshalb kommt die neue Variant "On Top".
Bevor der TO hier noch weiter mit Beleidigungen um sich wirft, mache ich den Thread dicht. Es finden sich ja zumindest einige Antworten, die die Situation ganz gut erklären, diese sollten der Nachwelt erhalten bleiben.