| Autor | Beitrag | 
| Dingo 
          Beiträge: 64
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mi 05.04.17 10:18 
 
Grüße!
 Mal eine Frage zu Zuweiungsoperatoren, warum gibt mir Visual Studio die zweite Zeile als falsch aus:
 		                       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
 
 
 
 
 | 
Verfasst: Mi 05.04.17 10:49 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| Ralf Jansen 
          Beiträge: 4708
 Erhaltene Danke: 991
 
 
 VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
 
 | 
Verfasst: Mi 05.04.17 11: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 
          Beiträge: 482
 Erhaltene Danke: 51
 
 
 
 
 | 
Verfasst: Mi 05.04.17 11:20 
 
	  |  Ralf Jansen hat folgendes geschrieben  : |  	  | 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 
          Beiträge: 4708
 Erhaltene Danke: 991
 
 
 VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
 
 | 
Verfasst: Mi 05.04.17 11:36 
 
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
 
 
 
 
 | 
Verfasst: Mi 05.04.17 11:39 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| hydemarie 
          Beiträge: 482
 Erhaltene Danke: 51
 
 
 
 
 | 
Verfasst: Mi 05.04.17 11:40 
 
Also wenn ich C# da richtig verstehe, gilt:
 		                       C#-Quelltext 
 									| 1:2:
 
 | int? value; int value; 					 |  | 
|  | 
| Ralf Jansen 
          Beiträge: 4708
 Erhaltene Danke: 991
 
 
 VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
 
 | 
Verfasst: Mi 05.04.17 11: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.
 		                       C#-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 
 | int value;
 int value;
 Console.WriteLine(value);
 
 int value;
 value = 5;
 Console.WriteLine(value);
 |  Für diesen Beitrag haben gedankt: hydemarie
 | 
|  | 
| hydemarie 
          Beiträge: 482
 Erhaltene Danke: 51
 
 
 
 
 | 
Verfasst: Mi 05.04.17 11: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 
          Beiträge: 4708
 Erhaltene Danke: 991
 
 
 VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
 
 | 
Verfasst: Mi 05.04.17 11: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 
          Beiträge: 482
 Erhaltene Danke: 51
 
 
 
 
 | 
Verfasst: Mi 05.04.17 12:03 
 
Deswegen sucht man sich ja auch einen bestimmten Compiler aus.    | 
|  | 
| Dingo  
          Beiträge: 64
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mo 10.04.17 09:10 
 | 
|  |