2012-10-19 13 views
10

Powiel możliwe:
C# short/long/int literal format?Który typ int ma zmienną domyślną?

Reading się na wykorzystaniu var w programowaniu, jestem ciekaw co domyślne var gdy jest stosowany do typu int. Na przykład, jeśli mogę użyć

var foo = 65535

będzie typ być ushort lub po prostu int? Dzięki.

+5

To prawdopodobnie Int32, ponieważ jest to swego rodzaju standard. Dlaczego się nie dowiesz? 'var num = 65535; Console.Write (num.GetType(). Name) ' – KChaloux

Odpowiedz

28

Naprawdę, co prosisz jest Jakie jest podawana do liczby całkowitej literałów w C#?, do którego rozwiązania można znaleźć w specyfikacji:

(sekcja 2.4.4.2 spec 4.0)

rodzaj liczbę całkowitą dosłownym jest określona następująco:

  • Jeśli literał nie ma sufiksu, ma pierwszy z tych typów, w którym jego wartość może być reprezentowana: int, uint, long, ulong.
  • Jeśli literał ma przyrostek U lub u, ma on pierwszy z tych typów, w którym może być reprezentowana jego wartość: uint, ulong.
  • Jeśli literał ma przyrostek L lub l, ma on pierwszy z tych typów, w którym może być reprezentowana jego wartość: długa, ulong.
  • Jeśli literał ma sufiks UL, Ul, uL, ul, LU, Lu, lU lub lu, jest on typu ulong.

Jeśli wartość reprezentowana przez liczbę całkowitą wykracza poza zakres typu ulong, pojawia się błąd podczas kompilacji.

+0

Dziękuję. Twoja odpowiedź była bardzo opisowa i pomocna. – MyCodeSucks

6

Wszystkie literały całkowite są typu int, więc zmienna będzie int chyba rzucić lub dodać wyraźnie typ kwalifikatora na koniec:

var quick = 65535;   // int 
var brown = (ushort)65535; // ushort 
var fox = 65535L;   // long 
+0

Dziękuję. Twoja odpowiedź była bardzo pomocna. – MyCodeSucks

+1

'unsigned' nie działa w języku C#. Myślę, że zamierzałeś użyć 'ushort'. – svick

Powiązane problemy