Pertanyaan yang sangat mendasar: bagaimana cara menulis short
literal dalam C ++?
Saya tahu yang berikut:
2
adalahint
2U
adalahunsigned int
2L
adalahlong
2LL
adalahlong long
2.0f
adalahfloat
2.0
adalahdouble
'\2'
adalah achar
.
Tapi bagaimana saya menulis short
literal? Saya mencoba 2S
tetapi itu memberikan peringatan kompiler.
Jawaban:
Ya, ini tidak hanya literal pendek, lebih seperti casted-int, tapi perilakunya sama dan saya pikir tidak ada cara langsung untuk melakukannya.
Berikut ini ilustrasi betapa Anda harus mengkhawatirkan hal ini:
Kompilasi -> membongkar ->
sumber
short foo = 1; foo += (short)2;
. Tetapi ini tidak dapat dielakkan karena promosi integer.C ++ 11 memberi Anda cukup dekat dengan apa yang Anda inginkan. (Telusuri "literal yang ditentukan pengguna" untuk mempelajari lebih lanjut.)
sumber
short
secara fisik tidak dapat menjadistd::uint
apa pun, karena itu adalah tipe yang ditandatangani. Dan itu tidak perlu 16 bit atau tipe yang sama sepertistd::int16_t
... yang bahkan tidak diharuskan ada dalam implementasi tertentu jika platform tidak dapat menyediakan tipe lebar-tepat. Ide inti dari jawaban ini bagus, tetapi didevaluasi oleh garis singgung yang tidak dapat dijelaskan menjadi jenis yang tidak terkait yang tidak ditanyakan OP.short
sebagai yang dilakukan oleh OP.Bahkan penulis standar C99 terperangkap oleh ini. Ini adalah cuplikan dari
stdint.h
implementasi domain publik Danny Smith :sumber
Jika Anda menggunakan Microsoft Visual C ++, ada sufiks literal yang tersedia untuk setiap jenis bilangan bulat:
Perhatikan bahwa ini adalah ekstensi non-standar dan tidak portabel . Nyatanya, saya bahkan tidak dapat menemukan info apa pun tentang sufiks ini di MSDN.
sumber
""ui8
didefinisikan sebagai'\000'
, yang pada dasarnya'\0'
.Anda juga dapat menggunakan sintaks konstruktor pseudo.
Saya merasa lebih mudah dibaca daripada mentransmisikan.
sumber
Sejauh yang saya tahu, Anda tidak, tidak ada sufiks seperti itu. Kebanyakan kompiler akan memperingatkan jika literal integer terlalu besar untuk dimasukkan ke dalam variabel apa pun yang Anda coba simpan.
sumber