Pengaturcaraan C

Ukuran operator dalam bahasa C

Ukuran operator dalam bahasa C
Dalam artikel ini, kita akan belajar mengenai ukuran operator di C. Ini adalah pengendali yang tidak digunakan secara meluas dalam pengembangan perisian tertanam, yang membantu kami mengetahui ukuran operasi. Oleh itu, nilai pengembalian ukuran operator membantu kita memahami jumlah bait yang diperuntukkan dalam memori komputer untuk menahan pemboleh ubah atau jenis data tertentu.

Memahami Sizeof:

Sebelum kita menyelami ukuran perbincangan operator, Marilah kita memahami makna pengendali terlebih dahulu. Operator dilambangkan dengan token atau simbol yang digunakan untuk melakukan operasi seperti penambahan, pengurangan, pendaraban, pembahagian, dll. berdasarkan nilai atau pemboleh ubah (Operan). Sebagai contoh, "*" adalah simbol yang digunakan untuk mewakili operasi pendaraban, dan berfungsi pada dua operasi (hasil = a * b;). Ini adalah contoh pengendali binari.

Walau bagaimanapun, jika pengendali hanya menggunakan satu operan, kami memanggil operator tersebut sebagai pengendali yang tidak bersesuaian. Operator sizeof adalah salah satu operator unary yang ada dalam bahasa pengaturcaraan C dan nampaknya, ia beroperasi hanya pada satu operasi. Operator size mengembalikan ukuran operasi. Ini bermaksud, dari nilai pengembalian operator Sizeof, kita dapat menyatakan dengan jelas berapa banyak bait yang diperuntukkan untuk menahan operasi tertentu dalam memori komputer.

Memori komputer adalah kumpulan unit memori (i.e. bait). Apabila sizeof (int) mengembalikan empat dalam sistem komputer tertentu, kita dapat mengatakan bahawa pembolehubah integer mengambil 4 bait untuk mempertahankan nilainya dalam memori sistem komputer tertentu. Juga, harap maklum bahawa nilai pengembalian ukuran operator juga bergantung pada mesin yang anda gunakan (sistem 32-bit atau sistem 64-bit).

Sintaks:

Sizeof (jenis)
Sizeof (ungkapan)

Jenis pengembalian sizeof adalah size_t.

Contoh:

Oleh kerana kita memahami ukuran operator dan mengetahui sintaksinya, mari kita lihat beberapa contoh, yang akan membantu kita memahami konsep dengan cara yang lebih baik.

Ukuran untuk jenis terbina dalam (contoh1.c):

Dalam program ini, kita akan melihat bagaimana ukuran operator berfungsi untuk jenis data terbina dalam seperti int, char, float, double. Mari kita lihat program dan outputnya.

#sertakan
int utama ()

printf ("Saiz char =% ld \ n", sizeof (char));
printf ("Saiz int =% ld \ n", sizeof (int));
printf ("Ukuran apungan =% ld \ n", sizeof (apungan));
printf ("Saiz ganda =% ld \ n \ n", sizeof (dua kali ganda));
printf ("Saiz int pendek =% ld \ n", sizeof (int pendek));
printf ("Saiz int panjang =% ld \ n", sizeof (int panjang));
printf ("Ukuran int panjang panjang =% ld \ n", sizeof (int panjang panjang));
printf ("Saiz panjang ganda =% ld \ n", sizeof (panjang ganda));
pulangan 0;

Sizeof untuk Array (contoh2.c)

Dalam program ini, kita akan melihat bagaimana menggunakan operator ukuran untuk pelbagai jenis array. Sekiranya terdapat array, ukuran operator akan kembali (No. elemen dalam array * Sizeof (jenis array)). Sebagai contoh, apabila kita menyatakan susunan jenis integer dari 10 elemen (int SmartPhones [10];), sizeof (Smartphone) akan kembali:

(Tidak. elemen dalam SmartPhones * sizeof (int)) = (10 * 4) = 40

Mari kita lihat program dan outputnya.

#sertakan
int utama ()

int SmartPhones [10];
char SmartPhoneNames [10];
SmartPhonesPrice berganda [10];
printf ("Saiz int =% ld \ n", sizeof (int));
printf ("Saiz char =% ld \ n", sizeof (char));
printf ("Saiz ganda =% ld \ n", sizeof (dua kali ganda));
/ * Ketahui ukuran Array * /
printf ("Saiz Telefon Pintar [10] =% ld \ n", sizeof (Telefon Pintar));
printf ("Saiz Nama SmartPhone [10] =% ld \ n", sizeof (Nama Telefon Pintar));
printf ("Saiz SmartPhonesPrice [10] =% ld \ n", sizeof (SmartPhonesPrice));
pulangan 0;

Ukuran untuk jenis yang ditentukan pengguna (contoh3.c):

Dalam contoh ini, kita akan melihat bagaimana menggunakan operator ukuran untuk jenis data yang ditentukan pengguna seperti struktur dan kesatuan. Mari gunakan program ini dan fahami hasilnya.

Sekarang, melihat programnya, dan kita dapat mengira ukuran SmartPhoneType secara manual. Seperti yang anda lihat di bawah, SmartPhoneType adalah struktur, dan mengandungi unsur-unsur berikut:

  • Bilangan pemboleh ubah jenis watak = 1 [sp_name]
  • Bilangan pemboleh ubah jenis integer = 1 [sp_version]
  • Bilangan pemboleh ubah jenis apungan = 3 [sp_length, sp_width, sp_height]

Dari contoh-1, kita telah melihat bahawa:

    • Saiz watak adalah 1 bait
    • Ukuran bilangan bulat ialah 4 bait
    • Ukuran apungan adalah 4 bait

Oleh itu, jika kita menambah ukuran semua elemen dalam struktur, kita seharusnya dapat memperoleh ukuran struktur,.e. Jenis Telefon Pintar. Oleh itu, ukuran struktur hendaklah = (1 + 4 + 4 + 4 + 4) bait = 17 bait. Walau bagaimanapun, output program mengatakan saiz strukturnya adalah 20. 3 bait tambahan (sp_name, yang merupakan watak, mengambil 4 bait dan bukannya 1 bait) yang diperuntukkan untuk struktur kerana struktur padding.

#sertakan
/ * Buat jenis struktur yang ditentukan pengguna - SmartPhoneType * /
jenis SmartPhoneType

char sp_name;
int sp_versi;
apungan sp_length;
terapung sp_width;
apungan sp_height;
Telefon Pintar;
/ * Tentukan jenis kesatuan yang ditentukan pengguna - SmartPhoneUnionType * /
Jenis SmartPhoneUnion Union

char sp_name;
int sp_versi;
apungan sp_length;
terapung sp_width;
apungan sp_height;
Telefon Pintar;
int utama ()

/ * Ketahui ukuran struktur dan kesatuan * /
printf ("Saiz struct =% ld \ n", sizeof (SmartPhone));
printf ("Ukuran kesatuan =% ld \ n", sizeof (SmartPhone_u));
pulangan 0;

Saizof untuk pemboleh ubah (contoh4.c):

Program contoh ini menggambarkan bahawa operator ukuran mampu menerima pemboleh ubah juga dan mengembalikan ukuran pemboleh ubah.

#sertakan
int utama ()

/ * Menyatakan pemboleh ubah dan susunan char, int, float dan double type * /
char var_a, var_b [20];
int var_c, var_d [20];
terapung var_e, var_f [20];
dua kali var_g, var_h [20];
/ * Ketahui ukuran pemboleh ubah dan larik.
Program ini menunjukkan bahawa pemboleh ubah juga boleh
digunakan sebagai ukuran operasi operator * /
/ * saiz char, variabel char dan array char * /
printf ("Saiz char =% ld \ n", sizeof (char));
printf ("Saiz var_a =% ld \ n", sizeof (var_a));
printf ("Saiz var_b [20] =% ld \ n \ n", sizeof (var_b));
/ * saiz int, pemboleh ubah int dan susunan int * /
printf ("Saiz int =% ld \ n", sizeof (int));
printf ("Saiz var_c =% ld \ n", sizeof (var_c));
printf ("Saiz var_d [20] =% ld \ n \ n", sizeof (var_d));
/ * saiz float, float variabel dan float array * /
printf ("Ukuran apungan =% ld \ n", sizeof (apungan));
printf ("Saiz var_e =% ld \ n", sizeof (var_e));
printf ("Saiz var_f [20] =% ld \ n \ n", sizeof (var_f));
/ * ukuran double, pemboleh ubah berganda dan susunan berganda * /
printf ("Saiz ganda =% ld \ n", sizeof (dua kali ganda));
printf ("Saiz var_g =% ld \ n", sizeof (var_g));
printf ("Saiz var_h [20] =% ld \ n", sizeof (var_h));
pulangan 0;

Ukuran untuk ungkapan (contoh5.c):

Dalam program contoh ini, kami akan menunjukkan bahawa operator ukuran juga dapat menerima ekspresi dan mengembalikan ukuran ekspresi yang dihasilkan.

#sertakan
int utama ()

int var_a = 5, var_b = 3;
berganda var_c = 2.5, var_d = 4.5;
printf ("Saiz int =% ld \ n", sizeof (int));
printf ("Saiz ganda =% ld \ n \ n", sizeof (dua kali ganda));
printf ("Saiz var_a * var_b =% ld \ n", sizeof (var_a * var_b));
printf ("Saiz var_c * var_d =% ld \ n", sizeof (var_c * var_d));
/ * Di sini kita mengalikan pemboleh ubah integer dengan pemboleh ubah berganda.
Oleh itu, operator sizeof akan mengembalikan ukuran ukuran maksimum
pemboleh ubah i.e. pemboleh ubah jenis berganda.* /
printf ("Saiz var_a * var_c =% ld \ n", sizeof (var_a * var_c));
pulangan 0;

Penggunaan sizeof secara praktikal (contoh6.c):

Program contoh ini akan membantu anda memahami kes penggunaan praktikal ukuran operator. Operator Sizeof sangat berguna sambil memperuntukkan memori dinamik dari timbunan menggunakan malloc. Mari kita lihat program dan outputnya.

#sertakan
#sertakan
typedef struktur

char sp_name;
int sp_versi;
apungan sp_length;
terapung sp_width;
apungan sp_height;
Jenis Telefon Pintar;
int utama ()

/ * Peruntukkan memori dalam memori Heap kerana memegang lima SmartPhoneType
pemboleh ubah.
* /
SmartPhoneType * SmartPhone_Ptr = (SmartPhoneType *) malloc (5 * sizeof (SmartPhoneType));
jika (SmartPhone_Ptr != NULL)

printf ("Memori diperuntukkan untuk 5 pemboleh ubah struktur SmartPhoneType di
memori timbunan.\ n ");

yang lain

printf ("Ralat berlaku semasa peruntukan memori timbunan!");

pulangan 0;

Kesimpulan:

The Sizeof adalah pengendali penting dalam bahasa pengaturcaraan C. Ini membantu kita dalam menentukan ukuran jenis data primitif, jenis data yang ditentukan pengguna, ungkapan, dll. dalam memori komputer. Operator Sizeof memainkan peranan penting dalam memperuntukkan memori dinamik dalam C menggunakan malloc, calloc, dll. dalam ingatan Tumpukan.

Permainan Makmal Apl Oculus Teratas
Sekiranya anda adalah pemilik alat dengar Oculus, maka anda mesti mengetahui tentang memuatkan sideload. Sideloading adalah proses memasang kandungan ...
10 Permainan Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform dominan untuk permainan kerana peratusan besar permainan yang sedang berkembang hari ini untuk meny...
5 Permainan Arcade Terbaik untuk Linux
Pada masa kini, komputer adalah mesin serius yang digunakan untuk permainan. Sekiranya anda tidak dapat memperoleh skor tinggi baru, anda akan tahu ma...