Forum: PC-Programmierung Seit wann in C++ int i {1]; möglich?


von Thomas M. (Firma: https://img.favpng.com/23/21/3) (thomasmopunkt)


Lesenswert?

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
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Siehst Du, in einer freien Welt darfst Du auch solche Trollfragen 
stellen.

Beitrag #5738814 wurde von einem Moderator gelöscht.
von Uhu U. (uhu)


Lesenswert?

So schlampig, wie du die Überschrift hingerotzt hast, war die Antwort 
schon völlig passend…

von Thomas M. (Firma: https://img.favpng.com/23/21/3) (thomasmopunkt)


Lesenswert?

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
von Mike B. (mike_b97) Benutzerseite


Lesenswert?


: Bearbeitet durch User
von Thomas M. (Firma: https://img.favpng.com/23/21/3) (thomasmopunkt)


Lesenswert?

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
von Thomas M. (Firma: https://img.favpng.com/23/21/3) (thomasmopunkt)


Lesenswert?

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
von Reinhard S. (rezz)


Lesenswert?

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?

von Thomas M. (Firma: https://img.favpng.com/23/21/3) (thomasmopunkt)


Lesenswert?

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
von Mike B. (mike_b97) Benutzerseite


Lesenswert?

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?

von Thomas M. (Firma: https://img.favpng.com/23/21/3) (thomasmopunkt)


Lesenswert?

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.
von Andreas M. (amesser)


Lesenswert?

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.

von Thomas M. (Firma: https://img.favpng.com/23/21/3) (thomasmopunkt)


Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Reinhard S. (rezz)


Lesenswert?

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.

von Thomas M. (Firma: https://img.favpng.com/23/21/3) (thomasmopunkt)


Lesenswert?

"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!!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.
von Carl D. (jcw2)


Lesenswert?

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".

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.