Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » C#: Operator '<<' cannot be applied ...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.11.2006, 10:13 Uhr
ao

(Operator)


Moin zusammen,

ich habe eine Variable vom Typ UInt32, wollte darauf den Bitschieber (<<) anwenden und kriege diesen Compilerfehler:

Code:
Operator '<<' cannot be applied to operands of type 'long' and 'uint'


Dass ich das auch anders programmieren kann, weiß ich. Aber kennt jemand den Grund, warum das so ist? Warum kann man uints und longs nicht schieben?

Gruß,
ao

Dieser Post wurde am 08.11.2006 um 10:14 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.11.2006, 10:24 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


hmm also bei mir funktioniert folgendes:

C++:
UInt32 test = 2;
test = test << 1;
Console.WriteLine(test);
Console.ReadKey();


bei folgendem bekomme ich den selben fehler wie du

C++:
UInt32 test = 2;
long i = 1;
test = test << i;



Nehme ich aber statt long ein int funktioniert es wieder. Komisch...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.11.2006, 10:16 Uhr
Th



Evtl. liegt es an folgender Unterscheidung (s. Remarks):


Zitat von C# Programmer's Reference:

The left-shift operator (<<) shifts its first operand left by the number of bits specified by its second operand.

expr << count

Where:
expr
An expression of type int, uint, long, or ulong; the value to be shifted.
count
An expression of type int; the shift count.

Remarks
If expr is an int or uint (32-bit quantity), the shift count is given by the low-order five bits of count (count & 0x1f).

If expr is a long or ulong (64-bit quantity), the shift count is given by the low-order six bits of count (count & 0x3f).

The high-order bits of expr are discarded and the low-order empty bits are zero-filled. Shift operations never cause overflows.



Der Datentyp bestimmt (anscheinend) die Anzahl der möglichen Shifts (nicht der Inhalt), d.h. nur gleiche Datentypen (mit intern gleich großer Bitzahl) können auf den <<-Operator angewendet werden.

Dieser Post wurde am 09.11.2006 um 10:17 Uhr von Th editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.11.2006, 10:26 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Nein wenn ich oben anstatt einem UINT32 ein long nehme kann ich rechts vom Shift trotzdem keine long Variable angeben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.11.2006, 11:06 Uhr
Th



Sorry, stimmt, es steht ja da, daß für 'count' nur int zugelassen ist. Ein long macht ja dann sowieso keinen Sinn, wenn nur die untersten 5 bzw. 6 Bits davon genommen werden -)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: