Tipe datanya panjang. Jenis floating point (float, double dan long double)


Semua orang tahu bahwa hanya besaran yang sejenis yang dapat dijumlahkan dan dikurangkan. Misalnya, apel dapat dijumlahkan dengan apel, tetapi apel tidak dapat dijumlahkan dengan meter persegi atau suhu. Kebanyakan bahasa algoritmik modern memiliki keterbatasan serupa.

Sama seperti benda biasa yang mempunyai jenis ciri-ciri warna (merah, biru, kuning, hijau), rasa (pahit, asam, manis), kuantitas (satu setengah, dua, tujuh), pada bahasa pemrograman MQL4 datanya berbeda-beda berdasarkan jenisnya. . Ketika kita berbicara tentang tipe data, yang kita maksud adalah tipe nilai dari sebuah konstanta, variabel, dan nilai yang dikembalikan oleh suatu fungsi (konsep fungsi dibahas di bagian Fungsi).

Dalam bahasa MQL4 ada jenis berikut(konstanta, variabel, dan nilai yang dikembalikan oleh fungsi):

Ketik int

Ketik nilai ke dalam- ini adalah bilangan bulat. Tipe ini mencakup nilai-nilai yang bersifat integral. Contoh bilangan bulat meliputi: jumlah bar di jendela instrumen keuangan (16.000 bar), jumlah order terbuka dan tertunda (3 order), jarak dalam poin dari kurs instrumen keuangan saat ini ke harga pembukaan order (15 poin). Banyaknya objek seperti event juga hanya boleh berupa bilangan bulat. Misalnya, jumlah percobaan untuk membuka order tidak boleh satu setengah, tetapi hanya satu, dua, tiga, dan seterusnya.

Ada 2 jenis nilai integer:

  • Desimal nilai dapat terdiri dari angka 0 - 9 dan dapat positif atau negatif: 10, 11, 12, 1, 5, -379, 25, -12345, -1, 2.
  • Heksadesimal nilai dapat terdiri dari huruf latin dari A sampai F atau dari a sampai f, angka dari 0 sampai 9, harus dimulai dengan 0x atau 0X dan bernilai positif dan negatif: 0x1a7b, 0xff340, 0xAC3 0X2DF23, 0X13AAB, 0X1 .

Nilai bertipe int harus berada dalam rentang angka dari -2,147,483,648 hingga 2,147,483,647. Jika nilai suatu konstanta atau variabel berada di luar rentang yang ditentukan, maka hasil program tidak akan terdefinisi. Dalam memori komputer, nilai konstanta dan variabel bertipe int menempati 4 byte.

Contoh penggunaan variabel int dalam suatu program:

int Seni = 10; // Contoh variabel integer
int B_27 = - 1; // Contoh variabel integer
int Angka = 21; // Contoh variabel integer
int Maks = 2147483647; // Contoh variabel integer
int Min = - 2147483648 ; // Contoh variabel integer

Ketik ganda

Ketik nilai dobel adalah bilangan real yang mengandung bagian pecahan.

Contoh nilai jenis ini adalah kuantitas apa pun yang nilainya mungkin memiliki bagian pecahan: sudut kemiringan garis support, harga instrumen keuangan, jumlah rata-rata order yang dibuka pada hari itu.

Kadang-kadang, ketika menulis program, mungkin timbul kesulitan dalam menentukan jenis suatu variabel, yaitu programmer tidak segera memahami jenis variabel apa (int atau double). Mari kita lihat contoh kecilnya:

Program ini membuka 12 order dalam seminggu. Jenis variabel A apa yang harus memperhitungkan jumlah rata-rata pesanan yang dibuka oleh program ini per hari? Jelas jawabannya : A = 12 pesanan / 5 hari. Artinya, variabel A = 2.4 harus diperhitungkan dalam program sebagai ganda, karena nilai ini memiliki bagian pecahan. Dan tipe apa yang harus digunakan pada variabel A ini jika jumlah total order yang dibuka per minggu adalah 10? Tampaknya jika 2 (10 pesanan / 5 hari = 2) tidak memiliki bagian pecahan, maka variabel A dapat dianggap sebagai int. Namun alasan ini salah. Nilai variabel saat ini mungkin memiliki bagian pecahan yang hanya terdiri dari nol. Namun yang penting nilai variabel ini valid secara inheren. Dalam hal ini, variabel A juga harus bertipe ganda, dan saat menulis konstanta dalam program, titik pemisah harus ditampilkan: A = 2.0


Nilai konstanta dan variabel real terdiri dari bagian bilangan bulat, titik desimal (.), dan bagian pecahan. Mereka bisa mengambil nilai positif dan negatif. Bagian bilangan bulat dan pecahan terdiri dari angka 0 - 9. Banyaknya angka penting setelah koma bisa mencapai 15. Contoh:

27.12 -1.0 2.5001 -765456.0 198732.07 0.123456789012345

Kisaran nilai ganda adalah dari -1.7*e-308 hingga 1.7*e308. Dalam memori komputer, nilai konstanta dan variabel bertipe ganda menempati 8 byte.

Contoh penggunaan variabel double dalam suatu program:

seni ganda = 10.123 ;
ganda B_27 = - 1,0 ; // Contoh variabel nyata
Angka ganda = 0,5; // Contoh variabel nyata
ganda MMM = - 12.07 ; // Contoh variabel nyata
ganda Harga_1 = 1,2756 ; // Contoh variabel nyata

Ketik bool

Ketik nilai bodoh- ini adalah nilai tipe logis, yang isinya salah dan benar.

Agar lebih memahami maksud dari konsep tersebut tipe boolean, mari kita lihat contoh kecil dari kehidupan sehari-hari. Mari kita asumsikan bahwa seorang guru perlu melacak buku pelajaran siswa. Dalam hal ini guru akan membuat daftar siswa pada selembar kertas dan disebelah kanan garis akan dibuat catatan apakah siswa tersebut mempunyai buku pelajaran atau tidak. Misalnya, dia dapat memberi tanda centang dan tanda hubung:

Daftar siswa Buku teks fisika Buku teks biologi Buku teks kimia
1 Ivanov V - -
2 Petrov V - V
3 Sidorov - V V
... ... ... ... ...
25 Mironov V V V

Nilai di kolom kanan hanya akan mengambil 2 kemungkinan nilai: benar atau salah. Nilai-nilai ini tidak dapat diklasifikasikan sebagai tipe data yang telah dibahas sebelumnya karena bukan angka. Mereka juga bukan nilai warna, rasa, kuantitas, dll. Namun demikian, mereka membawa muatan semantik yang penting. Dalam bahasa MQL4, nilai seperti itu disebut logis. Karakteristik konstanta dan variabel tipe bool adalah bahwa mereka hanya dapat mengambil 2 kemungkinan nilai - benar (benar, Benar, BENAR, 1) atau salah (salah, Salah, SALAH, 0). Dalam memori komputer, nilai konstanta dan variabel bertipe bool menempati 4 byte.

Contoh penggunaan variabel tipe bool dalam suatu program:

bool aa = Benar; // Variabel Boolean aa bernilai benar
bool B17 = BENAR; // Variabel Boolean B17 benar
bool Hamma = 1 ; // Variabel Boolean Hamma benar

bool Asd = Salah; // Variabel Boolean Asd salah
bool Nol = SALAH ; // Variabel Boolean Nol salah
bool Prim = 0; // Variabel Boolean Prim salah

Ketik string

Ketik nilai rangkaian- inilah artinya tipe string, yang merupakan sekumpulan karakter kode ASCII.

Dalam kehidupan sehari-hari, nama, misalnya toko, merek mobil, dll. memiliki konten yang serupa. Nilai tipe string ditulis sebagai sekumpulan karakter yang diapit tanda kutip ganda(jangan bingung antara tanda kutip ganda dengan dua tanda kutip tunggal!). Tanda kutip hanya digunakan untuk menunjukkan awal dan akhir nilai konstanta string, dan nilai itu sendiri adalah sekumpulan karakter yang diapit tanda kutip.

Jika Anda perlu memasukkan tanda kutip ganda "dalam sebuah string, maka Anda perlu meletakkan karakter garis miring terbalik di depannya: \. Karakter khusus apa pun dapat dimasukkan ke dalam string konstanta karakter, diawali dengan karakter garis miring terbalik \. Panjang konstanta string adalah dari 0 hingga 255 karakter. Jika panjang konstanta string melebihi maksimum, karakter tambahan di sebelah kanan dibuang, dan kompiler mengeluarkan peringatan yang sesuai. Kombinasi dua karakter, yang pertama adalah garis miring terbalik \, biasanya umum dan diterima oleh sebagian besar program sebagai indikasi untuk melakukan pemformatan teks tertentu. Kombinasi ini tidak ditampilkan dalam teks. Misalnya, kombinasi \n menunjukkan perlunya jeda baris, \t menunjukkan tab, dll.

Nilai tipe string ditulis sebagai sekumpulan karakter yang diapit tanda kutip ganda: "MetaTrader 4", "Stop Loss", "Ssssstop_Loss", "stoploss", "10 pips". Nilai string sebenarnya adalah kumpulan karakter di dalam tanda kutip. Tanda kutip hanya digunakan untuk menunjukkan batas suatu nilai. Representasi internal- struktur berukuran 8 byte.

Contoh penggunaan variabel string dalam suatu program:

string Awalan = "MetaTrader 4";
string Postfix = "_of_my_progr.OK"; // Contoh variabel string
string Nama_Mass = "Sejarah"; // Contoh variabel string
teks string ="Baris teratas\ n Intinya"; // teks berisi baris baru

Ketik warna

Ketik nilai warna adalah nilai jenis warna.

Semua orang tahu apa arti warna: biru, merah, putih, kuning, hijau. Tidak sulit membayangkan apa arti variabel atau konstanta tipe warna. Ini adalah konstanta atau variabel yang nilainya berwarna. Ini mungkin tampak agak tidak biasa, tetapi pada dasarnya sangat sederhana. Sama seperti nilai konstanta bilangan bulat adalah angka, nilai konstanta warna juga merupakan warna.

Nilai konstanta dan variabel warna dapat direpresentasikan dalam salah satu dari tiga jenis:

  • harfiah

    Nilai tipe warna literal memiliki tiga bagian yang mewakili nilai intensitas numerik dari tiga komponen warna primer: merah, hijau, dan biru. Jenis nilai ini dimulai dengan karakter C dan dikelilingi oleh kutipan tunggal.

    Nilai numerik untuk intensitas komponen warna berkisar antara 0 hingga 255 dan dapat ditulis dalam format desimal atau heksadesimal.

    Contoh: C"128,128,128" (abu-abu), C"0x00,0x00,0xFF" (biru), C"0xFF,0x33,0x00" (merah).

  • Representasi bilangan bulat

    Representasi bilangan bulat ditulis sebagai heksadesimal atau angka desimal. Angka heksadesimal mempunyai bentuk 0xRRGGBB, dimana RR adalah nilai intensitas komponen merah warna, GG adalah komponen hijau, dan BB adalah komponen biru. Konstanta desimal tidak mempunyai refleksi langsung dalam RGB. Mereka mewakili nilai desimal dari representasi bilangan bulat heksadesimal.

    Mewakili nilai tipe warna sebagai bilangan bulat dan literal heksadesimal sangat mudah. Teks paling modern dan editor grafis mewakili informasi tentang kandungan komponen merah, biru dan hijau dalam nilai warna yang dipilih. Pilih saja di editor warna yang diinginkan dan tulis ulang angka-angka yang diidentifikasi menjadi representasi nilai warna yang sesuai.

    Contoh: 0xFFFFFF (putih), 0x008000 (hijau), 16777215 (putih), 32768 (hijau).


    Beras. 11. Di editor modern, Anda dapat mengambil parameter warna untuk representasi literal dan integer nilai warna konstanta.

  • Nama warna

    Yang paling banyak dengan cara yang sederhana menentukan warna berarti menunjukkan namanya sesuai dengan tabel warna Web. Dalam hal ini arti warna diwakili oleh kata yang berhubungan dengan warna, misalnya Merah – merah.

    Hitam Hijau Tua DarkSlateGrey Zaitun Hijau teal Angkatan laut Ungu
    Merah tua Nila Biru Tengah Malam Biru tua Zaitun GelapHijau PelanaBrown HutanHijau ZaitunMenjemukan
    LautHijau Batang Emas Gelap Batu Tulis GelapBiru Sienna Biru Sedang Cokelat Pirus Gelap Redup Abu-Abu
    CahayaLautHijau Ungu Gelap Batu bata tahan api SedangVioletMerah SedangLautHijau Cokelat Merah tua BajaBiru
    batang emas SedangMusim SemiHijau Halaman RumputHijau KadetBiru Anggrek Gelap KuningHijau hijau limau OranyeMerah
    Oranye Gelap Oranye Emas Kuning Minuman keras manis Kapur Musim SemiHijau air
    Langit Biru Dalam Biru ungu Merah Abu-abu Batu Tulis Abu-abu Peru BiruViolet
    LightSlateGray Merah Muda Tua Pirus Sedang Pengelak Biru Pirus Biru Kerajaan Batu Tulis Biru Khaki Gelap
    Merah India Anggrek Sedang HijauKuning SedangAquamarine Laut GelapHijau Tomat RosyBrown Anggrek
    Ungu Sedang Ungu PucatMerah Karang Bunga JagungBiru Abu-abu Gelap SandyBrown SedangSlateBiru Tan
    Salmon Gelap Kayu Burly Merah Muda Panas Ikan salmon Ungu Karang Ringan Langit Biru Salmon Ringan
    Prem Dril Hijau Muda Aquamarine Perak Langit Biru Muda Baja RinganBiru Biru muda
    Hijau Pucat thistle BubukBiru Batang Emas Pucat Pirus Pucat Abu-abu Muda Gandum NavajoPutih
    Sepatu sandal Merah Muda Muda Gainsboro PersikPuff Berwarna merah muda Bisque Batang Emas Ringan Almond rebus
    LemonSifon Krem AntikPutih Cambuk Pepaya sutra jagung Kuning muda LightCyan Linen
    warna lembayung muda MistyRose Renda Tua Asap Putih Kerang laut Gading embun madu Alice Biru
    Perona Lavender krim mint Salju Putih



Dalam memori komputer, nilai konstanta dan variabel bertipe warna menempati 4 byte. Contoh penggunaan variabel tersebut dalam suatu program:

warna Paint_1 = C " 128 , 128 , 128 "; // Variabel diberi nilai abu-abu
warna Colo = C " 0 x00 , 0 x00 , 0 xFF "; // Variabel diberi nilai biru
warna BMP_4 = C " 0 xFF , 0 x33 , 0 x00 "

warna K_12 = 0 xFF3300 ; // Variabel diberi nilai merah
warna N_3 = 0 x008000 ;
warna Warna = 16777215 ;
warna Alfa = 32768 ; // Variabel diberi nilai hijau

warna A = Merah; // Variabel diberi nilai merah
warna B = Kuning ; // Variabel diberi nilai kuning
warna Colorit = Hitam ; // Variabel diberi nilai hitam
warna B_21 = Putih; // Variabel diberi nilai putih

tipe tanggal-waktu

Ketik nilai tanggalwaktu adalah nilai tanggal dan waktu.

Nilai jenis ini dapat digunakan dalam program untuk menganalisis momen awal atau akhir suatu peristiwa, termasuk rilis berita penting, awal/akhir hari kerja, dll. Konstanta tanggal dan waktu dapat direpresentasikan sebagai string literal, yang terdiri dari 6 bagian, mewakili nilai numerik tahun, bulan, tanggal (atau tanggal, bulan, tahun), jam, menit dan detik.

Konstanta diapit oleh tanda kutip tunggal dan dimulai dengan karakter D. Nilai terpotong diperbolehkan: tanpa tanggal, atau tanpa waktu, atau nilai kosong. Rentang perubahan nilai: mulai 1 Januari 1970 sampai dengan 31 Desember 2037. Dalam memori komputer, nilai konstanta dan variabel datetime menempati 4 byte. Nilai tersebut mewakili jumlah detik yang telah berlalu sejak pukul 00:00 pada tanggal 1 Januari 1970.

Contoh penggunaan variabel tipe datetime dalam suatu program:

tanggalwaktu Alfa = D "2004.01.01 00:00"; // Tahun Baru
tanggalwaktu Tim = D "01/01/2004"; // Tahun Baru
tanggalwaktu Tim = D "2005.05.12 16:30:45";
tanggal waktu N_3 = D "12/05/2005 16:30:45"; // 12 Mei 2005 16 jam 30 menit 45 detik
Kompilasi datetime = D ""; // setara dengan D"[tanggal kompilasi] 00:00:00"

Mendeklarasikan dan menginisialisasi variabel

Untuk memastikan bahwa selama perhitungan program tidak memiliki pertanyaan tentang tipe data apa yang termasuk dalam variabel tertentu, di MQL4 merupakan aturan wajib untuk secara eksplisit menunjukkan jenis variabel di awal program. Sebelum suatu variabel dapat mulai berpartisipasi dalam penghitungan apa pun, variabel tersebut harus dideklarasikan.

Deklarasi Variabel- ini adalah penyebutan pertama suatu variabel dalam program. Saat mendeklarasikan suatu variabel, tipenya ditunjukkan.

Menginisialisasi variabel- ini menugaskannya, ketika mendeklarasikannya, nilai yang sesuai dengan tipenya. Variabel apa pun dapat diinisialisasi. Jika tidak ada nilai awal yang ditentukan secara eksplisit, maka variabel numerik diinisialisasi ke nol (0), dan variabel string diinisialisasi ke string kosong.

Variabel dapat dideklarasikan pada baris terpisah:

int Var_1; // Mendeklarasikan variabel pada baris terpisah

Entri ini berarti bahwa variabel Var_1 (deklarasi variabel itu sendiri) akan digunakan dan tipe variabelnya adalah int.

Diperbolehkan mendeklarasikan beberapa variabel dengan tipe yang sama dalam satu baris:

int Var_1, Kotak, Komunikasi; // Mendeklarasikan beberapa variabel dalam satu baris

Entri ini berarti variabel Var_1, Box dan Comm akan digunakan dan tipe variabel tersebut adalah int, yaitu variabel yang terdaftar akan diperhitungkan oleh program sebagai variabel bertipe integer.


Diperbolehkan untuk menginisialisasi variabel dalam pernyataan:

ganda Var_5 = 3,7 ; // Inisialisasi variabel dalam pernyataan penugasan

Entri ini berarti variabel Var_5 akan digunakan tipe nyata dengan nilai awal 3,7.

Tidak ada tempat di baris program berikutnya yang menunjukkan jenis variabel. Namun, setiap kali program mengakses suatu variabel, program akan mengingat bahwa variabel tersebut adalah tipe yang ditentukan saat dideklarasikan. Seiring kemajuan perhitungan dalam program, nilai variabel dapat berubah, tetapi jenis variabel tidak berubah.

Nama variabel tidak ada hubungannya dengan tipe variabel, mis. Tidak mungkin menilai tipenya berdasarkan nama variabelnya. Nama variabel yang sama di program yang berbeda dapat digunakan untuk variabel jenis apa pun. Namun dalam satu program, tipe variabel apa pun hanya dapat dideklarasikan satu kali. Selama eksekusi program, tipe variabel yang dideklarasikan tidak berubah.

Contoh deklarasi dan inisialisasi variabel

Variabel dapat dideklarasikan dalam beberapa baris atau dalam satu baris.

Diperbolehkan untuk mendeklarasikan beberapa variabel dengan tipe yang sama secara bersamaan. Dalam hal ini, daftar variabel dipisahkan dengan koma, dan titik koma ditempatkan di akhir baris.



Beras. 12. Contoh mendeklarasikan variabel pada baris tersendiri.


Tipe variabel dideklarasikan satu kali, yaitu saat pertama kali variabel tersebut disebutkan. Selama penyebutan variabel yang kedua dan selanjutnya, tipenya tidak ditunjukkan.



Beras. 13. Contoh mendeklarasikan variabel pada baris tersendiri.


Deklarasi dan inisialisasi variabel dalam pernyataan diperbolehkan.



Beras. 14. Contoh inisialisasi variabel.



Beras. 15. Inisialisasi variabel di header pernyataan gabungan.

Untuk menyimpan bilangan real digunakan tipe data float (presisi tunggal) dan ganda (presisi ganda). Arti tanda “+” dan “-” untuk tipe real sama dengan tipe integer. Angka nol terakhir di sebelah kanan koma desimal diabaikan. Oleh karena itu, entri +523.5, 523.5 dan 523.500 mewakili nilai yang sama.

Ada dua format yang digunakan untuk merepresentasikan bilangan real:

titik tetap

[tanda] [bagian bilangan bulat]. [bagian pecahan]

Misalnya: –8.13; 0,168 (sama dengan 0,168); 183. (sama dengan 183.0).

floating point (bentuk eksponensial) orde mantissa E/e

Contoh: 5.235e+02 (5.235 x 102 = 523.5); –3,4E-03 (–3,4 x 10-03 = – 0,0034)

Dalam kebanyakan kasus, tipe ganda digunakan; ini memberikan presisi lebih tinggi daripada tipe float. Presisi maksimum dan rentang angka terbesar dicapai dengan menggunakan tipe ganda panjang.

Nilai dengan pengubah tipe mengambang membutuhkan 4 byte. Dari jumlah tersebut, 1 bit dialokasikan untuk tanda, 8 bit untuk eksponen berlebih, dan 23 bit untuk mantissa. Perhatikan bahwa bit paling signifikan dari mantissa selalu 1, sehingga tidak terisi, dan oleh karena itu rentang modulus variabel titik-mengambang adalah sekitar 3,14E–38 hingga 3,14E+38.

Nilai ganda membutuhkan 8 byte dalam memori. Formatnya mirip dengan format float. Bit memori didistribusikan sebagai berikut: 1 bit untuk tanda, 11 bit untuk eksponen, dan 52 bit untuk mantissa. Dengan mempertimbangkan bit tinggi mantissa yang dihilangkan, kisaran modulus nilai variabel presisi ganda adalah dari 1,7E–308 hingga 1,7E+308.

Nilai ganda yang panjang sama dengan nilai ganda.

Misalnya:

6. Tipe data karakter (char type)

Tidak ada tipe data dalam standar C++ yang dapat dianggap benar-benar berkarakter. Untuk merepresentasikan informasi karakter, ada dua tipe data yang cocok untuk tujuan ini: char dan wchar_t.

Variabel char dirancang untuk menyimpan hanya satu karakter (misalnya huruf atau spasi). Dalam memori komputer, karakter disimpan sebagai bilangan bulat. Korespondensi antara karakter dan kodenya ditentukan oleh tabel pengkodean, yang bergantung pada komputer dan sistem operasi. Hampir semua tabel pengkodean berisi huruf besar dan kecil alfabet Latin, angka 0, ..., 9, dan beberapa karakter khusus. Tabel pengkodean yang paling umum adalah tabel karakter ASCII ( Standar Amerika Kode untuk Pertukaran Informasi - Kode Standar Amerika untuk Pertukaran Informasi).

Karena karakter disimpan sebagai bilangan bulat dalam memori komputer, tipe char sebenarnya adalah bagian dari tipe int.

1 byte dialokasikan untuk nilai tipe karakter.

Tipe char dapat digunakan dengan penentu yang ditandatangani dan tidak ditandatangani. Tipe data yang ditandatangani char dapat menyimpan nilai dalam rentang -128 hingga 127. Dengan tipe unsigned char, nilai dapat berkisar dari 0 hingga 255. Pengkodeannya adalah ASCII. Karakter dengan kode dari 0 hingga 31 adalah karakter layanan dan memiliki arti independen hanya dalam pernyataan I/O.

Nilai bertipe char juga digunakan untuk menyimpan angka dari rentang tertentu.

Tipe wchar_t dirancang untuk bekerja dengan sekumpulan karakter yang 1 byte tidak cukup untuk dikodekan, misalnya, dalam pengkodean Unicode. Ukuran tipe wchar_t adalah 2 byte. Jika suatu program perlu menggunakan konstanta string bertipe wchar_t, maka konstanta tersebut ditulis dengan awalan L, misalnya L "Word".

Misalnya:

karakter r=("A","B","C","D","E","F","\0");

Tipe Data

Tipe data sangat penting dalam C# karena ini adalah bahasa yang sangat mengetik. Ini berarti bahwa semua operasi tunduk pada pemeriksaan tipe yang ketat oleh kompiler, dan operasi ilegal tidak dikompilasi. Oleh karena itu, pemeriksaan tipe yang ketat menghilangkan kesalahan dan meningkatkan keandalan program. Untuk memastikan pengecekan tipe, semua variabel, ekspresi, dan nilai harus dimiliki tipe tertentu. Tidak ada yang namanya variabel “tanpa tipe”. bahasa yang diberikan pemrograman tidak ada sama sekali. Selain itu, jenis nilai menentukan operasi yang dapat dilakukan terhadap nilai tersebut. Operasi yang sah untuk satu tipe data mungkin tidak valid untuk tipe data lainnya.

Ada dua kategori umum tipe data bawaan di C#: tipe nilai Dan tipe referensi. Mereka berbeda dalam isi variabelnya. Secara konseptual, perbedaan antara keduanya adalah tipe nilai menyimpan data secara langsung, sedangkan tipe referensi menyimpan referensi ke suatu nilai.

Jenis ini disimpan di tempat yang berbeda memori: tipe nilai disimpan di area yang disebut tumpukan, dan tipe referensi disimpan di area yang disebut tumpukan terkelola.

Mari kita lihat tipe nilai.

Tipe bilangan bulat

C# mendefinisikan sembilan tipe integer: char, byte, sbyte, short, ushort, int, uint, long dan ulong. Namun tipe char digunakan terutama untuk mewakili karakter dan oleh karena itu diperlakukan secara terpisah. Delapan tipe bilangan bulat sisanya digunakan untuk perhitungan numerik. Di bawah ini adalah kisaran angka dan kedalaman bitnya:

C# Tipe Integer
Jenis Ketik CTS Ukuran sedikit Jangkauan
byte Sistem.Byte 8 0:255
sbyte Sistem.SByte 8 -128:127
pendek Sistem.Int16 16 -32768: 32767
pendek Sistem.UInt16 16 0: 65535
ke dalam Sistem.Int32 32 -2147483648: 2147483647
tidak Sistem.UInt32 32 0: 4294967295
panjang Sistem.Int64 64 -9223372036854775808: 9223372036854775807
ulong Sistem.UInt64 64 0: 18446744073709551615

Seperti yang ditunjukkan tabel di atas, C# mendefinisikan varian yang ditandatangani dan tidak ditandatangani dari berbagai tipe bilangan bulat. Tipe bilangan bulat bertanda berbeda dari jenis bilangan bulat tak bertanda dalam cara mereka menafsirkan bit paling signifikan dari bilangan bulat. Jadi, jika suatu program menentukan nilai bilangan bulat bertanda, kompiler C# akan menghasilkan kode yang menggunakan bit bilangan bulat paling signifikan sebagai tanda tanda. Suatu bilangan dianggap positif jika tanda benderanya 0, dan negatif jika tandanya 1.

Bilangan negatif hampir selalu direpresentasikan dengan metode komplemen dua, yaitu semua digit biner dari bilangan negatif dibalik terlebih dahulu, kemudian 1 ditambahkan ke bilangan tersebut.

Mungkin tipe integer yang paling umum dalam pemrograman adalah tipe int. Variabel bertipe int sering digunakan untuk kontrol loop, pengindeksan array, dan perhitungan matematis. tujuan umum. Saat Anda memerlukan nilai integer dengan rentang representasi yang lebih besar daripada tipe int, ada sejumlah tipe integer lain yang tersedia untuk tujuan ini.

Jadi, jika suatu nilai perlu disimpan tanpa tanda, maka Anda dapat memilihnya tipe tidak jelas, untuk nilai bertanda besar - tipe panjang, dan untuk nilai besar yang tidak ditandatangani - ketik ulong. Sebagai contoh, di bawah ini adalah program yang menghitung jarak Bumi ke Matahari dalam sentimeter. Untuk menyimpan begitu banyak sangat penting itu menggunakan tipe variabel panjang:

Menggunakan Sistem; menggunakan System.Collections.Generik; menggunakan System.Linq; menggunakan Sistem.Teks; namespace ConsoleApplication1 ( Program kelas ( static void Main(string args) ( hasil panjang; const long km = 149800000; // jarak dalam km.hasil = km * 1000 * 100; Console.WriteLine(hasil); Console.ReadLine(); ) ) )

Semua bilangan bulat nilai variabel dapat ditetapkan dalam desimal atau sistem heksadesimal notasi. DI DALAM kasus terakhir membutuhkan awalan 0x:

Panjang x = 0x12ab;

Jika ada ketidakpastian mengenai apakah nilai integer bertipe int, uint, long, atau ulong, maka bawaan int diterima. Untuk secara eksplisit menentukan tipe bilangan bulat lain yang harus dimiliki suatu nilai, karakter berikut dapat ditambahkan ke angka:

Uint ui = 1234U; panjang aku = 1234L; ulong ul = 1234UL;

U dan L juga dapat ditulis dengan huruf kecil, meskipun huruf kecil L secara visual dapat dengan mudah tertukar dengan angka 1 (satu).

Jenis Titik Mengambang

Tipe floating-point memungkinkan Anda merepresentasikan angka dengan bagian pecahan. Ada dua tipe tipe data floating point di C#: mengambang Dan dobel. Mereka masing-masing mewakili nilai numerik dalam presisi tunggal dan ganda. Jadi, lebar tipe float adalah 32 bit, yang kira-kira sesuai dengan rentang representasi angka dari 5E-45 hingga 3.4E+38. Dan lebar tipe ganda adalah 64 bit, yang kira-kira sesuai dengan rentang representasi angka dari 5E-324 hingga 1.7E+308.

Tipe data float ditujukan untuk nilai floating-point yang lebih kecil dan memerlukan presisi yang lebih sedikit. Tipe data double lebih besar dari float dan menawarkan tingkat presisi yang lebih tinggi (15 bit).

Jika nilai non-integer dikodekan dalam kode sumber (misalnya, 12.3), maka kompiler biasanya berasumsi bahwa nilai ganda dimaksudkan. Jika nilainya perlu ditentukan sebagai float, Anda perlu menambahkan karakter F (atau f) ke dalamnya:

Mengambang f = 12.3F;

Tipe data desimal

Untuk mewakili angka floating point presisi tinggi tipe desimal juga tersedia desimal, yang dimaksudkan untuk digunakan dalam perhitungan keuangan. Tipe ini memiliki 128 bit untuk representasi nilai numerik mulai dari 1E-28 hingga 7.9E+28. Anda mungkin menyadari bahwa aritmatika floating-point biasa rentan terhadap kesalahan pembulatan desimal. Kesalahan ini dihilangkan saat menggunakan tipe desimal, yang memungkinkan Anda merepresentasikan angka hingga 28 (dan terkadang 29) tempat desimal. Karena tipe data ini dapat mewakili nilai desimal tanpa kesalahan pembulatan, tipe data ini sangat berguna untuk perhitungan yang berhubungan dengan keuangan:

Menggunakan Sistem; menggunakan System.Collections.Generik; menggunakan System.Linq; menggunakan Sistem.Teks; namespace ConsoleApplication1 ( Program kelas ( static void Main(string args) ( // *** Perhitungan biaya investasi dengan *** // *** tingkat pengembalian tetap*** uang desimal, persen; int i; const byte tahun = 15; uang = 1000,0 juta persen = 0,045 juta;

Hasil dari program ini adalah:

Simbol

Dalam C#, karakter direpresentasikan bukan dalam kode 8-bit, seperti di banyak bahasa pemrograman lain seperti C++, tetapi dalam kode 16-bit, yang disebut Unikode. Kumpulan karakter Unicode sangat luas sehingga mencakup karakter dari hampir semua bahasa alami di dunia. Meskipun banyak bahasa alami, termasuk Inggris, Prancis, dan Jerman, memiliki alfabet yang relatif kecil, beberapa bahasa lain, seperti bahasa Mandarin, menggunakan rangkaian karakter yang cukup besar yang tidak dapat diwakili oleh kode 8-bit. Untuk mengatasi keterbatasan ini, C# mendefinisikan ketik karakter, yang mewakili nilai 16-bit yang tidak ditandatangani yang berkisar antara 0 hingga 65.535. Namun, kumpulan karakter ASCII 8-bit standar adalah bagian dari Unicode yang berkisar dari 0 hingga 127. Oleh karena itu, karakter ASCII masih valid di C#.

Tipe data mendefinisikan sekumpulan nilai, sekumpulan operasi yang dapat diterapkan pada nilai tersebut, dan bagaimana nilai disimpan dan operasi dilakukan.

Proses pengecekan dan pembatasan jenis data yang digunakan disebut pengecekan tipe atau pengetikan data program. Membedakan jenis berikut mengetik:

  • Pengetikan statis - kontrol tipe dilakukan selama kompilasi.
  • Pengetikan dinamis - pemeriksaan tipe dilakukan pada saat run time.

Bahasa C mendukung pengetikan statis, dan tipe semua data yang digunakan dalam suatu program harus ditentukan sebelum dikompilasi.

Ada tipe data sederhana, gabungan dan lainnya.

Data Sederhana

Data sederhana dapat dibagi menjadi

  • bilangan bulat,
  • nyata,
  • simbolis
  • logis.

Data komposit (kompleks).

  • Array adalah kumpulan elemen bertipe sama yang diindeks.
  • Tipe string adalah array yang menyimpan serangkaian karakter.
  • Struktur adalah sekumpulan berbagai elemen (bidang catatan), disimpan sebagai satu kesatuan dan menyediakan akses ke masing-masing bidang struktur.

Tipe data lainnya

  • Pointer - menyimpan alamat di memori komputer yang menunjuk ke beberapa informasi, biasanya pointer ke suatu variabel.

Sebuah program yang ditulis dalam bahasa C beroperasi dengan data berbagai jenis. Semua data mempunyai nama dan tipe. Data dalam program diakses berdasarkan namanya (pengidentifikasi).

Pengidentifikasi adalah urutan yang berisi tidak lebih dari 32 karakter, yang dapat mencakup huruf alfabet Latin apa saja a - z, A - Z, angka 0 - 9 dan garis bawah (_). Karakter pertama pengenal tidak boleh berupa angka.

Meskipun nama yang boleh berisi maksimal 32 karakter, hanya 8 karakter pertama yang signifikan. Selain namanya, semua data mempunyai tipe. Indikasi tipe diperlukan agar diketahui berapa luas ruang yang ada RAM akan menempati objek ini.

Kompiler C menganut korespondensi ketat antara huruf besar dan huruf kecil atas nama pengidentifikasi dan token.

Data bilangan bulat

Data integer dapat direpresentasikan dalam bentuk bertanda tangan atau tidak bertanda tangan.

Integer Tak Bertanda Tangan direpresentasikan sebagai urutan bit dalam rentang 0 hingga 2 n -1, di mana n adalah jumlah bit yang ditempati.

Bilangan bulat yang ditandatangani direpresentasikan dalam rentang -2 n-1 …+2 n-1 -1. Dalam hal ini, bit data yang paling signifikan ditetapkan ke tanda angka (0 berarti angka positif, 1 berarti angka negatif).

Tipe dan ukuran dasar data integer:

Data nyata

Tipe nyata dimaksudkan untuk presentasi bilangan real. Bilangan real direpresentasikan dalam bit grid mesin dalam bentuk standar.

Bentuk bilangan yang dinormalisasi mengasumsikan adanya satu angka penting (bukan 0) sebelum memisahkan bagian bilangan bulat dan pecahan. Representasi ini dikalikan dengan basis sistem bilangan hingga derajat yang sesuai. Misalnya, bilangan 12345.678 dalam bentuk normalisasi dapat direpresentasikan sebagai

12345.678 = 1.2345678 10 4

Angka 0,009876 dalam bentuk ternormalisasi dapat direpresentasikan sebagai

0,009876 = 9,876·10 -3

DI DALAM sistem biner Dalam notasi, angka penting sebelum pemisah desimal hanya boleh sama dengan 1. Jika bilangan tersebut tidak dapat direpresentasikan dalam bentuk standar (misalnya angka 0), angka penting sebelum pemisah desimal adalah 0.

Digit-digit penting suatu bilangan, yang berada dalam bentuk ternormalisasi setelah pemisah bilangan bulat dan bagian pecahan, disebut mantissa bilangan tersebut.

Secara umum, bilangan real dalam bit grid komputer dapat direpresentasikan sebagai 4 bidang.

  • tanda— bit yang menentukan tanda suatu bilangan real (0 untuk bilangan positif, 1 untuk bilangan negatif).
  • derajat— menentukan pangkat 2 yang ingin Anda gunakan untuk mengalikan suatu bilangan dalam bentuk yang dinormalisasi. Karena pangkat 2 untuk suatu bilangan dalam bentuk ternormalisasi dapat berupa positif atau negatif, pangkat nol dari 2 dalam representasi bilangan real berhubungan dengan nilai pergeseran, yang didefinisikan sebagai

    di mana n adalah jumlah digit yang dialokasikan untuk mewakili pangkat suatu bilangan.

  • utuh- bit yang selalu sama dengan 1 untuk bilangan yang dinormalisasi, jadi dalam beberapa representasi tipe, bit ini dihilangkan dan dianggap sama dengan 1.
  • mantissa— angka penting yang mewakili suatu bilangan, berdiri setelah pemisah bagian bilangan bulat dan pecahan dalam bentuk standar.

Ada tiga jenis utama representasi bilangan real dalam bahasa C:

Seperti dapat dilihat dari tabel, tipe float dan double tidak memiliki bit integer. Dalam hal ini, jangkauan representasi bilangan real terdiri dari dua rentang yang terletak simetris terhadap nol. Misalnya, rentang representasi bilangan float dapat direpresentasikan sebagai:

Contoh: Mewakili angka -178.125 dalam grid 32-bit (tipe float).

Untuk merepresentasikan bilangan dalam sistem bilangan biner, kami mengubah bagian bilangan bulat dan pecahan secara terpisah:

178 10 = 10110010 2 .

0,125 10 = 0,001 2 .

178.125 10 = 10110010.001 2 =1.0110010001 2 111

Untuk mengkonversi ke bentuk normalisasi, geser 7 bit ke kiri).

Untuk menentukan pangkat suatu bilangan, gunakan shift:

0111111+00000111 = 10000110 .

Dengan demikian, angka -178.125 akan direpresentasikan dalam bit grid sebagai

Tipe karakter

Tipe karakter menyimpan kode karakter dan digunakan untuk menampilkan karakter dalam pengkodean berbeda. Data karakter ditentukan dalam kode dan pada dasarnya merupakan nilai integer. Untuk menyimpan kode karakter pada bahasa C digunakan tipe char.

Tipe Boolean

Tipe Boolean digunakan di operasi logis, digunakan dalam pengujian kondisi algoritmik dan dalam loop dan memiliki dua arti:

  • betul betul
  • salah — — salah

Program harus mendeklarasikan semua data yang digunakan, menunjukkan nama dan tipenya. Deskripsi data harus mendahului penggunaannya dalam program.

Contoh deklarasi objek

ke dalam n; // Variabel n bertipe integer
ganda a; // Variabel a bertipe real presisi ganda

DI DALAM bagian ini Tipe data utama dalam C++ akan dipertimbangkan; tipe data ini juga disebut bawaan. Bahasa pemrograman C++ adalah bahasa pemrograman yang dapat diperluas. Istilah yang dapat diperluas berarti bahwa selain tipe data bawaan, Anda dapat membuat tipe data Anda sendiri. Itu sebabnya di C++ ada jumlah yang sangat besar tipe data. Kami hanya akan mempelajari yang utama saja.

Tabel 1 - Tipe data C++
Jenis byte Rentang nilai yang diterima

tipe data bilangan bulat (Boolean).

bodoh 1 0 / 255

tipe data integer (karakter).

arang 1 0 / 255

tipe data bilangan bulat

int pendek 2 -32 768 / 32 767
unsigned int pendek 2 0 / 65 535
ke dalam 4
tidak ditandatangani ke dalam 4 0 / 4 294 967 295
panjang ke dalam 4 -2 147 483 648 / 2 147 483 647
tidak ditandatangani int panjang 4 0 / 4 294 967 295

tipe data titik mengambang

mengambang 4 -2 147 483 648.0 / 2 147 483 647.0
melayang panjang 8
dobel 8 -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

Tabel 1 menunjukkan tipe data utama di C++. Seluruh tabel dibagi menjadi tiga kolom. Kolom pertama menunjukkan kata yang dicadangkan, yang akan menentukan tipe data masing-masing. Kolom kedua menunjukkan jumlah byte yang dialokasikan untuk variabel dengan tipe data yang sesuai. Kolom ketiga menunjukkan kisaran nilai yang dapat diterima. Perlu diketahui bahwa pada tabel semua tipe data diurutkan dari yang terkecil hingga yang terbesar.

tipe data bool

Yang pertama dalam tabel adalah tipe data bool tipe data integer, karena rentang nilai yang valid adalah bilangan bulat dari 0 hingga 255. Namun seperti yang telah Anda perhatikan, dalam tanda kurung tertulis tipe data Boolean, dan ini juga benar. Karena bodoh digunakan secara eksklusif untuk menyimpan hasil ekspresi Boolean. Ekspresi Boolean dapat mempunyai salah satu dari dua hasil: benar atau salah. benar - jika ekspresi logis benar, salah - jika ekspresi logisnya salah.

Tetapi karena rentang nilai valid dari tipe data bool adalah dari 0 hingga 255, rentang ini perlu dicocokkan dengan konstanta logika true dan false yang ditentukan dalam bahasa pemrograman. Jadi, konstanta true setara dengan semua bilangan dari 1 hingga 255 inklusif, sedangkan konstanta false setara dengan hanya satu bilangan bulat - 0. Pertimbangkan sebuah program yang menggunakan tipe data bool.

// data_type.cpp: Mendefinisikan titik masuk untuk aplikasi konsol. #termasuk "stdafx.h" #termasuk menggunakan namespace std; int main(int argc, char* argv) ( bool boolean = 25; // variabel bertipe bool bernama boolean if (boolean) // kondisi operator if cout<< "true = " << boolean << endl; // выполнится в случае истинности условия else cout << "false = " << boolean << endl; // выполнится в случае, если условие ложно system("pause"); return 0; }

DI DALAM baris 9tipe variabel dideklarasikan bodoh , yang diinisialisasi ke 25. Secara teoritis, setelahbaris 9, dalam variabel boolean seharusnya berisi angka 25, namun nyatanya variabel ini berisi angka 1. Seperti yang saya katakan, angka 0 adalah nilai salah, angka 1 adalah nilai sebenarnya. Intinya di variabel like bodoh dapat berisi dua nilai - 0 (salah) atau 1 (benar). Sedangkan pada tipe datanya bodoh seluruh byte dialokasikan, yang berarti variabel bertipe bodoh dapat berisi angka dari 0 hingga 255. Untuk menentukan nilai salah dan benar, hanya diperlukan dua nilai 0 dan 1. Timbul pertanyaan: “Untuk apa 253 nilai lainnya?”

Berdasarkan situasi ini, kami sepakat untuk menggunakan angka dari 2 hingga 255 sebagai padanan dari angka 1, yaitu kebenaran. Inilah sebabnya mengapa variabel boolean berisi angka 25 dan bukan 1. In baris 10 -13 dideklarasikan, yang mengalihkan kendali kepada operator di baris 11, jika kondisinya benar, dan operator masuk baris 13, jika kondisinya salah. Hasil program ditunjukkan pada Gambar 1.

Benar = 1 Tekan tombol apa saja untuk melanjutkan. . .

Gambar 1 - tipe data bool

Tipe data karakter

Tipe data char adalah tipe data integer yang digunakan untuk mewakili karakter. Artinya, setiap karakter berhubungan dengan nomor tertentu dari rentang tersebut. Tipe data char juga disebut tipe data karakter, karena representasi grafis karakter dalam C++ dimungkinkan berkat char. Untuk merepresentasikan karakter dalam C++, tipe data char dialokasikan satu byte, satu byte berisi 8 bit, lalu kita naikkan dua ke pangkat 8 dan mendapatkan nilai 256 - jumlah karakter yang dapat dikodekan. Jadi, dengan menggunakan tipe data char, Anda dapat menampilkan 256 karakter mana pun. Semua karakter yang dikodekan diwakili dalam .

ASCII (dari Kode Standar Bahasa Inggris untuk Pertukaran Informasi) - Kode standar Amerika untuk pertukaran informasi.

Pertimbangkan sebuah program menggunakan tipe data char.

// simbol.cpp: Mendefinisikan titik masuk untuk aplikasi konsol. #termasuk "stdafx.h" #termasuk menggunakan namespace std; int main(int argc, char* argv) ( char simbol = "a"; // mendeklarasikan variabel bertipe char dan menginisialisasinya dengan simbol "a" cout<< "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string = "сайт"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; }

Jadi, di baris 9sebuah variabel bernama simbol , itu diberi nilai simbol"A" ( kode ASCII). DI DALAM baris 10 operator cout mencetak karakter yang terkandung dalam variabel simbol DI DALAM baris 11sebuah array string bernama rangkaian , dan ukuran array ditentukan secara implisit. Sebuah string disimpan dalam array string"situs web" . Harap dicatat bahwa ketika kita menyimpan simbol ke dalam variabel seperti arang , lalu setelah tanda sama dengan kita beri tanda kutip tunggal yang kita tulis simbolnya. Saat menginisialisasi array string dengan string tertentu, tanda kutip ganda ditempatkan setelah tanda sama dengan, di mana string tertentu ditulis. Seperti karakter biasa, string dikeluarkan menggunakan operator menghitung , baris 12. Hasil program ditunjukkan pada Gambar 2.

Simbol = string = situs Untuk melanjutkan, tekan tombol apa saja. . .

Gambar 2 - tipe data char

Tipe data bilangan bulat

Tipe data integer digunakan untuk merepresentasikan angka. Ada enam di antaranya di Tabel 1: short int, unsigned short int, int, unsigned int, long int, unsigned long int . Semuanya memiliki ukuran memori dan rentang nilai yang diterima. Tergantung pada kompilernya, ukuran memori yang digunakan dan kisaran nilai yang diterima mungkin berbeda. Pada Tabel 1, semua rentang nilai yang diterima dan ukuran memori yang ditempati diambil untuk kompiler MVS2010. Selain itu, semua tipe data pada Tabel 1 disusun dalam urutan peningkatan ukuran memori yang digunakan dan rentang nilai yang diterima. Kisaran nilai yang diterima, dengan satu atau lain cara, bergantung pada ukuran memori yang ditempati. Oleh karena itu, semakin besar ukuran memori yang ditempati, semakin besar pula rentang nilai yang diterima. Selain itu, rentang nilai yang diterima berubah jika tipe data dideklarasikan dengan awalan unsigned. Awalan unsigned berarti tipe data tidak dapat menyimpan nilai yang ditandatangani, maka rentang nilai positif menjadi dua kali lipat, misalnya tipe data short int dan unsigned short int.

Awalan tipe data integer:

pendek awalan memperpendek tipe data yang diterapkan dengan mengurangi ukuran memori yang ditempati;

panjang awalan memperluas tipe data yang diterapkan dengan meningkatkan ukuran memori yang ditempati;

unsigned—awalan menggandakan rentang nilai positif, sedangkan rentang nilai negatif tidak dapat disimpan dalam tipe data ini.

Jadi, pada dasarnya, kita memiliki satu tipe integer untuk mewakili integer: tipe data int. Berkat awalan short, long, unsigned, variasi tipe data int tertentu muncul, berbeda dalam ukuran memori yang digunakan dan (atau) rentang nilai yang diterima.

Tipe Data Titik Mengambang

Ada dua jenis data floating point di C++: float dan double. Tipe data floating point dirancang untuk menyimpan angka floating point. Tipe data float dan double dapat menyimpan bilangan floating point positif dan negatif. Tipe data float memiliki jejak memori setengah dari tipe data double, yang berarti rentang nilai yang diterima juga lebih kecil. Jika tipe data float dideklarasikan dengan awalan panjang, maka rentang nilai yang diterima akan sama dengan rentang nilai yang diterima dari tipe data ganda. Pada dasarnya tipe data floating point diperlukan untuk menyelesaikan masalah perhitungan dengan presisi tinggi, misalnya transaksi uang.

Jadi, kita telah melihat poin utama mengenai tipe data utama di C++. Yang tersisa hanyalah menunjukkan dari mana semua rentang nilai yang diterima dan ukuran memori yang ditempati ini berasal. Dan untuk ini kami akan mengembangkan sebuah program yang akan menghitung karakteristik utama dari semua jenis data yang dibahas di atas.

// data_types.cpp: Mendefinisikan titik masuk untuk aplikasi konsol. #termasuk "stdafx.h" #termasuk // Pustaka manipulasi I/O #include // file header fungsi matematika #include menggunakan namespace std; int main(int argc, char* argv) ( cout<< " data type " << "byte" << " " << " max value "<< endl // header kolom <<"bool = " << sizeof(bool) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных bool*/ << (pow(2,sizeof(bool) * 8.0) - 1) << endl << "char = " << sizeof(char) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных char*/ << (pow(2,sizeof(char) * 8.0) - 1) << endl << "short int = " << sizeof(short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных short int*/ << (pow(2,sizeof(short int) * 8.0 - 1) - 1) << endl << "unsigned short int = " << sizeof(unsigned short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned short int*/ << (pow(2,sizeof(unsigned short int) * 8.0) - 1) << endl << "int = " << sizeof(int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных int*/ << (pow(2,sizeof(int) * 8.0 - 1) - 1) << endl << "unsigned int = " << sizeof(unsigned int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned int*/ << (pow(2,sizeof(unsigned int) * 8.0) - 1) << endl << "long int = " << sizeof(long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных long int*/ << (pow(2,sizeof(long int) * 8.0 - 1) - 1) << endl << "unsigned long int = " << sizeof(unsigned long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных undigned long int*/ << (pow(2,sizeof(unsigned long int) * 8.0) - 1) << endl << "float = " << sizeof(float) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных float*/ << (pow(2,sizeof(float) * 8.0 - 1) - 1) << endl << "double = " << sizeof(double) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных double*/ << (pow(2,sizeof(double) * 8.0 - 1) - 1) << endl; system("pause"); return 0; }

Program ini diposting agar Anda dapat melihat karakteristik tipe data di sistem Anda. Tidak perlu memahami kodenya, karena program ini menggunakan pernyataan kontrol yang kemungkinan besar belum Anda pahami. Untuk pengenalan sekilas dengan kode program, saya akan menjelaskan beberapa poin di bawah ini. Operator ukuran() Menghitung jumlah byte yang dialokasikan untuk tipe data atau variabel. Fungsi kekuatan(x,y) mengangkat makna x pangkat y , fungsi ini tersedia dari file header . manipulator tetap dan setprecision() tersedia dari file header . Yang pertama sudah diperbaiki , meneruskan nilai dalam bentuk tetap ke aliran keluaran. Manipulator setprecision(n) menampilkan n tempat desimal. Nilai maksimum tipe data tertentu dihitung menggunakan rumus berikut:

Tipe_val_maks = 2^(b * 8 - 1) - 1; // untuk tipe data dengan angka negatif dan positif // dimana b adalah jumlah byte yang dialokasikan dalam memori untuk variabel dengan tipe data ini // kalikan dengan 8, karena ada 8 bit dalam satu byte // kurangi 1 dalam tanda kurung, karena rentang angka harus dibagi dua untuk nilai positif dan negatif // kurangi 1 di akhir, karena rentang angka dimulai dari nol // tipe data dengan awalan unsigned max_val_type = 2^(b * 8) - 1; // untuk tipe data hanya bilangan positif // penjelasan rumusnya sama, hanya satuannya tidak dikurangkan dari tanda kurung

Contoh cara kerja program dapat dilihat pada Gambar 3. Kolom pertama menunjukkan tipe data utama pada C++, kolom kedua menunjukkan ukuran memori yang dialokasikan untuk setiap tipe data, dan kolom ketiga menunjukkan nilai maksimum yang sesuai. tipe data dapat berisi. Nilai minimum ditemukan serupa dengan nilai maksimum. Untuk tipe data dengan awalan unsigned, nilai minimumnya adalah 0.

Tipe data byte nilai maksimal bool = 1 255.00 char = 1 255.00 short int = 2 32767.00 unsigned short int = 2 65535.00 int = 4 2147483647.00 unsigned int = 4 4294967295.00 long int = 4 2147483647.0 unsigned long int = 4 4294967295.00 float = 4 2147483647.00 ganda = 8 9223372036854775808.00 Untuk melanjutkan, tekan tombol apa saja. . .

Gambar 3 - Tipe data C++

Jika, misalnya, variabel bertipe short int diberi nilai 33000, maka bit grid akan meluap, karena nilai maksimum dalam variabel bertipe short int adalah 32767. Artinya, beberapa nilai lain akan disimpan dalam variabel bertipe short int, kemungkinan besar akan negatif. Karena kita telah menyentuh tipe data int, perlu dicatat bahwa Anda dapat menghilangkan kata kunci int dan menulis, misalnya, short saja. Kompiler akan menafsirkan entri seperti int pendek. Hal yang sama berlaku untuk awalan yang panjang dan tidak bertanda tangan. Misalnya:

// singkatan dari tipe data int short a1; // sama dengan short int long a1; // sama dengan long int unsigned a1; // sama seperti unsigned int unsigned short a1; // sama dengan int pendek yang tidak ditandatangani

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat