W C / C # / itd. Możesz powiedzieć kompilatorowi, że liczba literału nie jest tym, czym się wydaje (tj. float
Zamiast double
, unsigned long
zamiast int
:
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
itp.
Czy ktoś mógłby wskazać mi ich listę? W szczególności szukam sufiksu dla short
lub Int16
.
Odpowiedzi:
Myślę, że to wszystko ... nie ma żadnych dosłownych specyfikatorów dla krótkiego / ushort / byte / sbyte
źródło
byte b = 42;
)somebyte = (byte)(somebool ? 1 : 0);
1l
I1L
oba będą traktowane jako długie liczby całkowite, ale z pewnością1L
są bardziej czytelne niż1l
.Od §2.4.4.2 Literały całkowite :
Oraz z §2.4.4.3 Prawdziwe literały :
źródło
Jeśli twoja zmienna nie jest już krótka, musisz ją jawnie rzutować:
źródło
Nie ma jednego na krótko. Po prostu użyj
short s = 1;
.źródło
short z1 = (0 == 1 ? 0 : 1);
Ale to nie:short y = 1; short z2 = (0 == 1 ? 0 : y);
(przepraszam, brak0
że gałąź w if jest konwertowana na anint
przed przypisaniem doz2
. Jeśli użyjesz dwóchshort
s w swoich gałęziach, wynikiem ponownie będzieshort
. Z if / else kompilator nie może wiedzieć, że Twójint
może być reprezentowany jakoshort
.