Pengenalan
- 5015
- 1511
- Noah Torp
Seperti yang dijanjikan, bermula dengan bahagian artikel pembangunan C kami, kami akan memulakan pembelajaran, tanpa pengenalan lanjut. Saya tidak dapat mencari cara yang lebih baik untuk memulakan selain ini, kerana jenis, pengendali dan pembolehubah adalah bahagian penting dari C dan anda akan menggunakannya sepanjang masa ketika menulis program anda sendiri. Contohnya, anda boleh menulis program C yang mudah tanpa menentukan fungsi anda sendiri, tetapi lebih sukar untuk melakukannya tanpa beberapa pembolehubah, melainkan jika anda ingin berpegang pada "Hello, World!". Pemboleh ubah tidak lebih dari lokasi dalam ingatan memegang nilai yang dapat diubah (oleh itu nama). Tetapi sebelum anda mengisytiharkan pemboleh ubah, anda mesti tahu jenis nilai yang anda mahukan, dan di sini anda akan menggunakan jenis. Dan untuk mengendalikan Mengenai pembolehubah itu, anda memerlukan ... pengendali, tentu saja. Saya berhasrat untuk menjadikan kursus ini sebagai ringkas, jadi saya mengesyorkan perhatian dan seperti biasa, berlatih.
Jenis
Seperti yang dikatakan, sebelum anda pergi dan mengisytiharkan pemboleh ubah, anda mesti tahu apa jenis nilai yang akan dipegangnya. Adakah ia akan menjadi nombor? Jika ya, berapa besarnya mungkin dapat? Adakah integer? Atau mungkin anda mahu mengisytiharkan rentetan? Ini adalah perkara yang mesti anda ketahui dengan pasti sebelum memilih jenisnya, dan kami mengesyorkan penjagaan tambahan ketika datang ke kemungkinan penampan limpahan. C adalah jenis bahasa yang memberi anda tali yang cukup untuk menggantung diri anda dan tidak melakukan banyak tangan, dan kesilapan ini sangat sukar untuk ditemui dalam program yang besar.
Sebelum kita mula, anda mesti menyedari hubungan antara perkakasan dan jenis. Di sinilah kami mengharapkan anda melakukan bacaan untuk diri sendiri terutama jika anda menggunakan perkakasan selain x86, sama ada 32 atau 64-bit, penyusun selain GCC atau sistem operasi selain Linux. Biasanya, perbezaan ini muncul ketika berurusan dengan nilai titik terapung. Kami tidak akan lebih mendalam dalam hal ini, kerana ia bukan masa atau tempat, tetapi anda dijangka membaca beberapa dokumentasi pada pengkompil anda, terutama bahagian yang bergantung kepada perkakasan. Sekarang mari kita mulakan.
char c; unsigned char UC; seluar pendek; AS yang tidak ditandatangani; int i; unsigned u; panjang l; UL lama tidak ditandatangani; terapung f; Double D; ld double panjang; const int ci;
Kami memutuskan untuk mengambil jalan "contoh pertama, penjelasan kemudian" di sini, kerana kami merasakan bahawa sesetengah daripada anda akan menemui contoh di atas yang biasa. Terdapat bahasa lain yang berkaitan yang mengisytiharkan pembolehubah mereka hampir dengan cara yang sama, dan selepas semua, kata kunci adalah intuitif. Sebelum kita pergi, mesti dikatakan bahawa char, int, float dan double adalah jenis data utama dalam c. Tidak ditandatangani dan ditandatangani adalah pengubah, Berarti bahawa jika anda perlu bekerja dengan nilai yang lebih kecil daripada sifar, anda harus memberitahu pengkompil bahawa pembolehubah anda ditandatangani, seperti di dalamnya boleh lebih besar atau lebih kecil daripada sifar. panjang dan pendek (ini boleh digunakan untuk bilangan bulat biasanya) membolehkan anda menyimpan nilai yang lebih besar, atau lebih kecil, dan bilangan bait adalah bergantung kepada mesin, tetapi pendek mestilah selalu lebih kecil daripada int, yang pada gilirannya harus selalu lebih kecil daripada panjang. Seperti yang anda lihat, dalam amalan seseorang tidak menggunakan int panjang atau int pendek, hanya panjang atau pendek. Kata kunci const memberitahu pengkompil bahawa apabila pembolehubah mempunyai nilai, ia tidak dapat diubah.
Mari mulakan dengan jenis terkecil, char. Ia dijamin cukup besar untuk memegang satu bait, dan ia sentiasa saiz tetap. Sekiranya orang akan memberitahu anda bahawa bait selalu lapan bit, lebih baik berfikir lagi. Setiap seni bina perkakasan yang popular memang menggunakan bait lapan bit, tetapi ada pengecualian, jadi jangan membuat andaian jika anda ingin menulis kod mudah alih. Pada x86, kerana bait adalah lapan bit, char (unsigned) boleh memegang nilai dari 0 hingga 255, iaitu 28. Sekiranya char ditandatangani, maka ia dapat memegang nilai dari -128 hingga 127. Tetapi nama itu boleh menyesatkan anda: watak memang boleh disimpan dalam char, tetapi jika anda menggunakan unicode, kami bercakap multibyte di sana dan anda perlu menggunakan wchar_t, tetapi lebih banyak lagi yang kemudian.
Sekarang anda tahu jenis pengubah jenis, kita boleh sampai ke bilangan bulat. Pada bilangan bulat, anda boleh menggabungkan pengubah tanda dan panjang, seperti yang dilihat dalam contoh di atas, agar sesuai dengan keperluan anda. Ingatlah untuk mempunyai editor yang berguna dan periksa dengan had.h header (di sistem saya ia boleh didapati di /usr /termasuk) untuk mengetahui had sebenar pada sistem anda. Sebagai peraturan pendek, int akan memegang nilai dari 0 hingga 65535 atau, jika ditandatangani, dari -32768 hingga 32767. Dan pengubah panjang akan menggandakan bilangan bait penyimpanan, jadi jika int memerlukan 2 bait, panjang akan memerlukan 4. Kami akan menyerahkannya kepada pengguna untuk mengetahui selebihnya bilangan bulat dan nilai minimum dan maksimal mereka. Walau bagaimanapun, kami akan menunjukkan kepada anda bagaimana untuk mengetahui saiz dan had sistem anda.
Terapung adalah nilai terapung, yang menunjukkan bahawa anda mesti menentukan pembolehubah seperti ini:
nilai terapung; nilai = 234.00;
Walaupun ia tidak mempunyai apa -apa selepas titik (bahagian perpuluhan), jadi ia sebenarnya integer. Sebenarnya ada situasi di mana anda mesti mengisytiharkan nilai integer sebagai terapung, kerana nilai mungkin berubah dan jenis yang diisytiharkan mesti dapat menyimpan nilai titik terapung. Semua nilai pada mesin anda boleh didapati di apungan.h.
Pembolehubah
Sekarang anda tahu jenis yang anda ada di C, mari kita lihat bagaimana anda dapat menggunakannya dengan berkesan. Ada yang mungkin tertanya -tanya "jika kita mempunyai beregu lama yang dapat menyimpan nilai -nilai yang begitu besar, mengapa tidak menggunakannya di mana -mana?" . Pengaturcaraan adalah mengenai kecekapan, dan pengaturcaraan C terutamanya, dan itulah sebabnya menyimpan nilai seperti 23 dalam dua kali ganda akan menggunakan 4 kali memori yang diperlukan, tanpa apa -apa. Apabila anda mengisytiharkan pemboleh ubah, sebahagian memori dikhaskan untuknya bergantung pada jenisnya. Jadi mengapa memori membazir tanpa alasan yang baik? Buat tabiat menggunakan jenis tepat yang sesuai dengan nilai (mungkin) anda, tidak kurang, tidak lebih. Anda telah melihat di atas bagaimana untuk mengisytiharkan pembolehubah. Sekarang mari kita lihat bagaimana untuk menentukan mereka, seperti dalam mari kita memberi mereka nilai.
c = 'a'; i = 234; F = 12643.984; LD = 16546581654161598309.87;
Kami mengambil nama dari contoh -contoh sebelumnya, yang, seperti yang anda perhatikan, ditulis untuk mencerminkan jenis yang ditetapkan, jadi 'ld' adalah dua kali ganda dan sebagainya. Dalam contoh ini, kami mengambil dua langkah: yang pertama mengisytiharkan pembolehubah, yang kedua untuk menentukannya dengan memberikan nilai. Ada yang mengatakan ia adalah gaya yang baik untuk menulis kod seperti itu, tetapi anda boleh melakukan kedua -dua operasi dalam satu langkah dan tiada siapa yang akan menyakiti anda:
char c = 'a'; int i = 234; Float F = 12643.984; LD Double LD = 16546581654161598309.87;
Kami mengesyorkan dan juga menggesa anda untuk menggunakan nama dengan makna dalam kod anda, dan mengulas sebanyak mungkin: kemungkinan ada orang lain yang membaca apa yang anda tulis dan kehidupan mereka akan menjadi lebih mudah jika anda melakukannya. Juga, gunakan topi hanya apabila perlu, terutamanya kerana C menggunakan semua-cap dalam pelbagai arahan preprocessor. Juga watak pertama dalam nama pembolehubah mestilah surat.
Seperti yang dijanjikan, kerana semua ceramah dan tidak bermain tidak baik, kami akan menunjukkan kepada anda sedikit program yang boleh anda gunakan untuk melihat nilai minimum dan maksimal dari pelbagai jenis, tetapi kami hanya akan menggambarkan beberapa. Selebihnya akan menjadi tugas anda, mengikuti contoh kami, dengan editor mempunyai had.H dan terapung.H terbuka. Akan ada beberapa elemen baru di sini, tetapi tidak pernah bimbang, mereka akan dijelaskan.
#include #include #include int main () unsigned long long ullmax = ullong_max; lmax panjang = long_max; ldmax dua kali ganda = ldbl_max; printf ("Nilai maksimum jangka panjang yang tidak ditandatangani adalah %lu.\ n ", ullmax); printf (" nilai maksimum panjang ialah %ld.\ n ", lmax); printf (" Nilai maksimum panjang dua adalah %lf.\ n ", ldmax); kembali 0;
Oleh itu, kami mengisytiharkan tiga pembolehubah dengan nama yang bermakna dan memberikan nilai tiga makro yang ditakrifkan dalam had.H dan terapung.h. Sudah tentu, kita mesti mencetaknya. Kami melakukannya menggunakan printf (), dan di sini kami akan berhenti untuk bercakap sedikit. Kami mengesyorkan 'Man 3 Printf' untuk maklumat lanjut mengenai rentetan format, iaitu, bahagian di dalam petikan berganda printf yang bermula dengan '%'. Mereka memberitahu printf apa jenis nilai yang diharapkan, jadi harus berkelakuan berbeza dengan jenis yang berbeza. Dalam contoh pertama '%lu' bermaksud panjang panjang (l), yang tidak ditandatangani ('u'). Bagi bilangan bulat, rentetan format adalah 'd', untuk perpuluhan, dan kerana ia adalah integer yang panjang, ia akan menjadi '%ld'. Di printf ketiga, f bermaksud terapung, dua kali ganda pada dasarnya terapung panjang, dan dua kali ganda adalah terapung panjang yang panjang, oleh itu formatnya.
Sekarang, simpan kod di atas, menyusunnya dan jalankannya. Program ini, sebaik sahaja anda menambah lebih banyak lagi, akan membantu anda apabila anda ingin mengisytiharkan pemboleh ubah, tetapi anda masih belum pasti jenis yang sepatutnya sesuai.
Pengendali
Pengendali aritmetik
Subkumpulan ini, tentu saja, berkaitan dengan pengendali asas biasa yang anda pelajari di sekolah rendah. Tetapi ada sedikit lagi. Contoh musuh,. Pengendali +, -, *, / / / % adalah pengendali binari. % adalah pengendali modulo, yang bermaksud bahawa jika kita mempunyai 50 % 2, hasilnya akan menjadi 0 kerana hasil dari Bahagian 50/2 mempunyai integer sebagai hasilnya. Anda boleh menggunakan empat pengendali pertama dengan sebarang nilai angka, tetapi modulo hanya berurusan dengan bilangan bulat. Keutamaan adalah sama seperti dalam buku aritmetik.
Pengendali relasi
Pengendali ini>,> =, <=, <, and they all have the same precedence. For the next part we recommend extra care, because it's cause for much confusion in the beginner's league, and non-beginners alike. Like said above, one uses '=' to give some value to a variable. But if you want to check if a variable has a certain value, you use '==', and if it hasn't, use '!=', where '!' is the logical negation operator, as you'll see. Let's take the following (useless) example:
#include int main () int var = 4; jika (var == 4) printf ("var ialah 4!\ n "); lain printf ("Ada sesuatu yang salah.\ n "); kembali 0;
Casting
Ringkas. Ini tidak dilakukan secara rawak, hanya antara jenis yang serasi, dan penjagaan disyorkan semasa menggunakan pemutus. Sebagai contoh, katakan kita ingin mengetahui nilai ASCII 'A'. Kodnya boleh kelihatan seperti ini:
#include int main () char c = 'a'; printf ("nilai ASCII 'a' adalah %d.\ n ", (int) c); kembali 0;
Anda akan mendapat nilai 97, yang memang nilai ASCII 'a'. Oleh itu, dengan menggunakan kurungan sebelum dan selepas jenis anda ingin "mengenakan" dan semua ini sebelum nama pembolehubah, anda mendapat pemutus. Contoh di atas berfungsi kerana char tidak lebih daripada int kecil, jadi jenisnya serasi. Cuba pemutus pemboleh ubah di atas ke jenis lain dan perhatikan hasilnya.
Peningkatan dan Pengendali Pengendali
Anda pasti pernah mendengar mengenai C ++. Nah, nama itu menunjukkan bahawa ia lebih daripada C, kerana '++' adalah pengendali kenaikan (menambah 1 kepada nilai pembolehubah), sama seperti '-' adalah pengendali pengurangan. Ini adalah pengendali unary dan boleh diawali dan juga postfixed. Apa maksudnya? Itu bermaksud bahawa anda boleh menulis sama ada ++ c atau c ++, dan hasilnya mungkin atau mungkin tidak serupa. Perbezaannya ialah dengan '++' prefixed, nilai pembolehubah pertama kali ditingkatkan oleh satu, kemudian digunakan, dan sebaliknya. Kami akan menunjukkan kepada anda contoh ringkas ketika itu penting dan bila tidak.
#include int main () int x; int n = 10; int z; N ++; / * n akan menjadi 11 sekarang */ ++n; / *ditto, awalan atau postfix tidak penting */ x = n ++; / * x akan menjadi 10 */ z = ++ n; / * z akan menjadi 11 */ kembali 0;
Tetapi bagaimana jika anda ingin meningkatkan/menurun dengan lebih daripada satu? Sederhana, kerana C ++ adalah bersamaan dengan C+= 1. Ganti 1 dengan apa jua nilai yang anda perlukan dan anda sudah bersedia. Pengendali kompaun ini juga boleh digunakan dengan mana -mana pengendali aritmetik binari lain (e.g. *= atau /=) dan pengendali bitwise juga, seperti 'a & = b'.
Pengendali bitwise
Di C anda boleh melakukan operasi bitwise dengan mudah, tetapi ingat! Mereka bekerja dan hanya akan digunakan dengan jenis integer, ditandatangani atau tidak ditandatangani. Pengendali ini adalah:
& - bitwise dan | - bitwise atau ^ - xor <> - shift kanan - - pelengkap seseorang
Pengendali logik
Kami sudah berurusan dengan '!', yang menafikan sebarang ekspresi logik, tetapi terdapat dua pengendali logik yang sangat penting (berhati -hati untuk tidak mencampurkannya dengan bitwise): dan atau, masing -masing. Jadi, jika saya ingin menulis dalam C sesuatu seperti "Jika Variable 1 mempunyai Nilai 2 dan Variable 2 mempunyai nilai 8", saya akan menulis seperti ini:
jika (var1 == 2 && var2 == 8) ..
Di sini kedua -dua syarat mesti dinilai sebagai benar untuk arahan berikut jika melaksanakan. Sekiranya sama ada, atau kedua -duanya, kami menggantikan '&&' dengan '||' (konjungsi berbanding disjunction).
Pengendali lain
Orang yang mempunyai pengalaman C mungkin menyedari kekurangan beberapa pengendali. Sudah tentu, dan kita sedar akan perkara itu, tetapi apa yang boleh dilakukan untuk menyenaraikan pengendali indirection sementara pembaca tidak tahu apa penunjuk? Oleh itu, pengendali lain, khusus untuk bahagian lain C, akan ditangani pada waktunya.
Kesimpulan
Dengan contoh -contoh yang ditawarkan di bahagian ini, kami yakin anda mempunyai cukup untuk bermain sedikit dan mencuba pelbagai pilihan. Anda tahu, pengkompil tidak akan menggigit jika anda memberi makan data yang salah, dan tidak akan meletupkan komputer. Dan, seperti yang kami katakan sebelumnya, anda tidak dapat mempelajari pengaturcaraan dengan membaca buku sahaja. Oleh itu, dapatkan papan kekunci anda dan buat sesuatu yang menarik.
Inilah yang boleh anda harapkan seterusnya:
- I. C Pembangunan di Linux - Pengenalan
- Ii. Perbandingan antara c dan bahasa pengaturcaraan lain
- Iii. Jenis, pengendali, pembolehubah
- Iv. Kawalan aliran
- V. Fungsi
- Vi. Petunjuk dan tatasusunan
- VII. Struktur
- Viii. Asas I/O
- Ix. Gaya dan cadangan pengekodan
- X. Membina program
- Xi. Pembungkusan untuk Debian dan Fedora
- Xii. Mendapatkan pakej di repositori debian rasmi
Tutorial Linux Berkaitan:
- Ungkapan biasa python dengan contoh
- Skrip Bash: Hello World Contoh
- Cara memasang Ubuntu di USB Stick
- Perkara yang hendak dipasang di Ubuntu 20.04
- Pengenalan kepada Automasi, Alat dan Teknik Linux
- Buat Manjaro Linux Bootable USB
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- Ubuntu 20.04 Trik dan Perkara yang Anda Tidak Tahu
- Buat Ubuntu 20 bootable.04 USB melekat pada MS Windows 10
- Cara Memasang Pemandu Nvidia di Fedora 32