Dalam C / C # / etc. Anda bisa memberi tahu kompiler bahwa angka literal tidak seperti apa yang tampak (mis., float
Alih- alih double
, unsigned long
bukannya int
:
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
dll.
Bisakah seseorang menunjuk saya ke daftar ini? Saya secara khusus mencari akhiran untuk short
atau Int16
.
Jawaban:
Saya pikir itu saja ... tidak ada penentu literal untuk pendek / ushort / byte / sbyte
sumber
byte b = 42;
)somebyte = (byte)(somebool ? 1 : 0);
1l
dan1L
keduanya akan diperlakukan sebagai bilangan bulat panjang tetapi tentu saja1L
lebih mudah dibaca daripada1l
.Dari §2.4.4.2 Literal integer :
Dan dari §2.4.4.3 Literal nyata :
sumber
Jika variabel Anda belum pendek, Anda harus memberikannya secara eksplisit:
sumber
Singkatnya, tidak ada satu pun. Gunakan saja
short s = 1;
.sumber
short z1 = (0 == 1 ? 0 : 1);
Tapi ini tidak:short y = 1; short z2 = (0 == 1 ? 0 : y);
(maaf, tidak ada jeda baris yang diizinkan dalam komentar)0
cabang if dikonversi menjadiint
sebelum penugasanz2
. Jika Anda menggunakan duashort
s di cabang Anda, hasilnya akan kembali menjadi ashort
. Dengan if / else, kompiler tidak dapat mengetahui bahwa Andaint
dapat direpresentasikan sebagaishort
.