Jenis numerik integral (referensi C#)
Jenis numerik integral mewakili angka integer. Semua jenis numerik integral adalah jenis nilai. Termasuk jenis sederhana dan dapat diinisialisasi dengan harfiah. Semua jenis numerik integral mendukung operator aritmatika, logis bitwise, perbandingan, dan kesetaraan.
Karakteristik jenis integral
C# mendukung jenis integral yang telah ditentukan sebelumnya berikut:
Jenis/kata kunci C# | Rentang | Ukuran | Jenis .NET |
---|---|---|---|
sbyte |
-128 hingga 127 | Integer 8-bit yang ditandai | System.SByte |
byte |
0 hingga 255 | Integer 8-bit yang tidak ditandai | System.Byte |
short |
-32,768 hingga 32,767 | Integer 16-bit yang ditandai | System.Int16 |
ushort |
0 hingga 65,535 | Integer 16-bit yang tidak ditandai | System.UInt16 |
int |
-2,147,483,648 hingga 2,147,483,647 | Integer 32-bit yang ditandai | System.Int32 |
uint |
0 hingga 4,294,967,295 | Integer 32-bit yang tidak ditandai | System.UInt32 |
long |
-9,223,372,036,854,775,808 hingga 9,223,372,036,854,775,807 | Integer 64-bit yang ditandai | System.Int64 |
ulong |
0 hingga 18,446,744,073,709,551,615 | Integer 64-bit yang tidak ditandai | System.UInt64 |
nint |
Bergantung pada platform (dihitung saat runtime) | Integer 32-bit atau 64-bit yang ditandai | System.IntPtr |
nuint |
Bergantung pada platform (dihitung saat runtime) | Integer 32-bit atau 64-bit yang tidak ditandai | System.UIntPtr |
Di semua baris tabel kecuali dua baris terakhir, setiap kata kunci jenis C# dari kolom paling kiri adalah alias untuk jenis .NET yang sesuai. Nama jenis kata kunci dan .NET dapat dipertukarkan. Misalnya, deklarasi berikut mendeklarasikan variabel dengan jenis yang sama:
int a = 123;
System.Int32 b = 123;
Jenis nint
dan nuint
dalam dua baris terakhir tabel adalah integer berukuran asli. Anda dapat menggunakan nint
kata kunci kontekstual dan nuint
untuk menentukan bilangan bulat berukuran asli. Ini adalah bilangan bulat 32-bit saat berjalan dalam proses 32-bit, atau bilangan bulat 64-bit saat berjalan dalam proses 64-bit. Bilangan bulat dapat digunakan untuk skenario interop, pustaka tingkat-rendah, dan untuk mengoptimalkan performa dalam skenario saat matematika bilangan bulat digunakan secara ekstensif.
Jenis bilangan bulat berukuran-asli diwakili secara internal sebagai jenis .NET System.IntPtr dan System.UIntPtr. Mulai dari C# 11, jenis nint
dan nuint
adalah alias untuk jenis yang mendasari.
Nilai default dari setiap jenis integral adalah nol, 0
.
Masing-masing jenis integral memiliki MinValue
properti dan MaxValue
yang memberikan nilai minimum dan maksimum dari jenis tersebut. Properti ini adalah konstanta waktu kompilasi kecuali untuk kasus jenis berukuran asli (nint
dan nuint
). Properti MinValue
dan MaxValue
dihitung pada runtime untuk jenis berukuran asli. Ukuran jenis tersebut bergantung pada pengaturan proses.
Gunakan struktur System.Numerics.BigInteger untuk mewakili bilangan bulat bertanda tanpa batas atas atau bawah.
Literal integer
Literal integer dapat berupa
- desimal: tanpa prefiks apa pun
- heksadesimal: dengan prefiks
0x
atau0X
- biner: dengan awalan
0b
atau0B
Kode berikut menunjukkan contoh masing-masing:
var decimalLiteral = 42;
var hexLiteral = 0x2A;
var binaryLiteral = 0b_0010_1010;
Contoh sebelumnya juga menunjukkan penggunaan _
sebagai pemisah digit. Anda dapat menggunakan pemisah digit dengan semua jenis harfiah numerik.
Jenis bilangan bulat literal ditentukan oleh sufiksnya sebagai berikut:
Jika literal tidak memiliki sufiks, jenisnya adalah yang pertama dari jenis berikut di mana nilainya dapat diwakili:
int
,uint
,long
,ulong
.Catatan
Literal diinterpretasikan sebagai nilai positif. Misalnya, literal
0xFF_FF_FF_FF
mewakili jumlah4294967295
jenisuint
, meskipun memiliki representasi bit yang sama dengan jumlah-1
jenisint
. Jika Anda membutuhkan nilai dari jenis tertentu, transmisikan literal ke jenis itu. Gunakan operatorunchecked
, jika nilai literal tidak dapat diwakili dalam jenis target. Misalnya,unchecked((int)0xFF_FF_FF_FF)
menghasilkan-1
.Jika literal tidak memiliki sufiks
U
atauu
, jenisnya adalah yang pertama dari jenis berikut di mana nilainya dapat diwakili:uint
,ulong
.Jika literal tidak memiliki sufiks
L
ataul
, jenisnya adalah yang pertama dari jenis berikut di mana nilainya dapat diwakili:long
,ulong
.Catatan
Anda dapat menggunakan huruf kecil
l
sebagai sufiks. Namun, ini menghasilkan peringatan kompiler karena hurufl
dapat dikacaukan dengan digit1
. GunakanL
untuk kejelasan.Jika literal diakhiri oleh
UL
,Ul
,uL
,ul
,LU
,Lu
,lU
, ataulu
, jenisnya adalahulong
.
Jika nilai yang diwakili oleh literal integer melebihi UInt64.MaxValue, kesalahan kompiler CS1021 terjadi.
Jika jenis literal integer yang ditentukan adalah int
dan nilai yang diwakili oleh literal berada dalam rentang jenis tujuan, nilai dapat secara implisit dikonversi ke sbyte
, byte
, short
, ushort
, uint
, ulong
, nint
atau nuint
:
byte a = 17;
byte b = 300; // CS0031: Constant value '300' cannot be converted to a 'byte'
Seperti yang ditunjukkan contoh sebelumnya, jika nilai harfiah tidak berada dalam rentang jenis tujuan, kesalahan pengompilasi CS0031 akan muncul.
Anda juga dapat menggunakan cast untuk mengonversi nilai yang diwakili oleh literal integer ke jenis selain jenis literal yang ditentukan:
var signedByte = (sbyte)42;
var longVariable = (long)42;
Konversi
Anda dapat mengonversi jenis numerik integral apa pun ke jenis numerik integral lainnya. Jika jenis tujuan dapat menyimpan semua nilai jenis sumber, konversi bersifat implisit. Jika tidak, Anda harus menggunakan ekspresi cast untuk bisa melakukan konversi eksplisit. Untuk informasi selengkapnya, lihat Konversi numerik bawaan.
Integer berukuran asli
Jenis bilangan bulat berukuran native memiliki perilaku khusus karena penyimpanannya ditentukan oleh ukuran bilangan bulat alami pada komputer target.
Untuk mendapatkan ukuran bilangan bulat berukuran-asli pada durasi, Anda dapat menggunakan
sizeof()
. Namun, kode harus dikompilasi di dalam konteks yang tidak aman. Contohnya:Console.WriteLine($"size of nint = {sizeof(nint)}"); Console.WriteLine($"size of nuint = {sizeof(nuint)}"); // output when run in a 64-bit process //size of nint = 8 //size of nuint = 8 // output when run in a 32-bit process //size of nint = 4 //size of nuint = 4
Anda juga bisa mendapatkan nilai yang setara dari properti statis IntPtr.Size dan UIntPtr.Size.
Untuk mendapatkan nilai minimum dan maksimum bilangan bulat berukuran asli pada run time, gunakan
MinValue
danMaxValue
sebagai properti statis dengan kata kuncinint
dannuint
, seperti di dalam contoh berikut:Console.WriteLine($"nint.MinValue = {nint.MinValue}"); Console.WriteLine($"nint.MaxValue = {nint.MaxValue}"); Console.WriteLine($"nuint.MinValue = {nuint.MinValue}"); Console.WriteLine($"nuint.MaxValue = {nuint.MaxValue}"); // output when run in a 64-bit process //nint.MinValue = -9223372036854775808 //nint.MaxValue = 9223372036854775807 //nuint.MinValue = 0 //nuint.MaxValue = 18446744073709551615 // output when run in a 32-bit process //nint.MinValue = -2147483648 //nint.MaxValue = 2147483647 //nuint.MinValue = 0 //nuint.MaxValue = 4294967295
Anda bisa menggunakan nilai konstanta di dalam rentang berikut:
- Untuk
nint
: Int32.MinValue ke Int32.MaxValue. - Untuk
nuint
: UInt32.MinValue ke UInt32.MaxValue.
- Untuk
Kompilator menyediakan konversi implisit dan eksplisit ke jenis numerik lainnya. Untuk informasi selengkapnya, lihat Konversi numerik bawaan.
Tidak ada sintaksis langsung untuk harfiah bilangan bulat berukuran-asli. Tidak ada akhiran untuk menunjukkan bahwa harfiah adalah bilangan bulat berukuran-asli, seperti
L
untuk menunjukkanlong
. Anda dapat menggunakan transmisi implisit atau eksplisit dari nilai bilangan bulat lainnya sebagai gantinya. Contohnya:nint a = 42 nint a = (nint)42;
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat bagian berikut dari spesifikasi bahasa C#:
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk