Autor Beitrag
Dingo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64
Erhaltene Danke: 1



BeitragVerfasst: Mi 05.04.17 11:18 
Grüße!

Mal eine Frage zu Zuweiungsoperatoren, warum gibt mir Visual Studio die zweite Zeile als falsch aus:

ausblenden C#-Quelltext
1:
2:
int value3 = 11;
int value3 <<= 3;

<<= wäre ein ungültiger Ausdruck. Warum? Gehört doch zu den zusammengesetzten Zuweisungsoperatoren.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 05.04.17 11:49 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4424
Erhaltene Danke: 903


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 05.04.17 12:06 
Du hast da nochmal int vorgeschrieben und zeigst damit an das eine Variablendefinition stattfindet. Lass das int weg.

a.) value3 existiert bereits -> ungültig
b.) würde value3 noch nicht existieren würde deine Shift Operation auch schon value3 benutzen um value3 zu setzen. Hieße du benutzt eine Variable bevor sie intialisiert ist -> ungültig
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: Mi 05.04.17 12:20 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
du benutzt eine Variable bevor sie intialisiert ist -> ungültig


Jein. Variablen haben in der Regel einen Standardwert, und je nach Compiler (und Datentyp (und Programmiersprache...)) wird dann einfach kommentarlos dieser genommen (bei Ganzzahlen ist das meist 0).
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4424
Erhaltene Danke: 903


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 05.04.17 12:36 
Zitat:
Jein.


In einem C# Forenordner können wir denke ich davon ausgehen das sich die Frage auf einen C# Compiler bezieht ;) Und der mag sowas nicht auch wenn .Net selbst das erlaubt.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 05.04.17 12:39 
- Nachträglich durch die Entwickler-Ecke gelöscht -
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: Mi 05.04.17 12:40 
Also wenn ich C# da richtig verstehe, gilt:

ausblenden C#-Quelltext
1:
2:
int? value; // NULL
int value; // 0
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4424
Erhaltene Danke: 903


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 05.04.17 12:49 
Jein. Solange du nie wirklich in value reinguckst wird das so sein und das sogar kompilieren ;) (Denn Wert könnte man auch per default(T) Methode ermitteln)

Wenn du value aber benutzt ohne zwischen Definition und Verwendung auch einen Wert zuweist wird der Compiler das ablehnen mit einem 'use of unassigned value' Error.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
// geht 
int value;

// geht nicht 
int value;
Console.WriteLine(value);

// geht
int value;
value = 5;
Console.WriteLine(value);

Für diesen Beitrag haben gedankt: hydemarie
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: Mi 05.04.17 12:52 
Verdammte Spezifikationen immer. Da lobe ich mir doch C/C++. Da ist so was einfach "undefiniertes Verhalten" und tut vielleicht das Gewünschte und vielleicht nicht.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4424
Erhaltene Danke: 903


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 05.04.17 12:57 
Zitat:
Da ist so was einfach "undefiniertes Verhalten" und tut vielleicht das Gewünschte und vielleicht nicht.


Jupp. In dem Zusammenhang sprechen C++ Entwickler glaube ich immer vom ~mündigen~ Programmierer und füllen sich gegängelt wenn sie daran gehindert werden etwas zu tun von dem sie glauben es besser zu Wissen als der Compiler ;)
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: Mi 05.04.17 13:03 
Deswegen sucht man sich ja auch einen bestimmten Compiler aus. 8)
Dingo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64
Erhaltene Danke: 1



BeitragVerfasst: Mo 10.04.17 10:10 
Ah ok, danke.^^