1 poin oleh GN⁺ 4 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Seri keempat yang membahas dasar-dasar bahasa C ini menyusun definisi fungsi, prioritas operator, goto, penghitung, dan penjumlahan sebagai potongan kode yang iseng
  • Bagian definisi fungsi memberi saran untuk menggunakan deklarasi maju sebisa mungkin agar mengurangi error saat waktu kompilasi, serta contoh demo yang mendeklarasikan main() lebih dulu
  • Bagian prioritas operator menampilkan contoh demo dengan asumsi bahwa prioritas operator aritmetika yang terdefinisi dengan baik harus dipatuhi, dan bahwa && memiliki prioritas yang lebih ketat daripada &&
  • Bagian goto memuat kalimat bahwa C biasanya bergantung pada fungsi sehingga termasuk dalam kategori bahasa pemrograman fungsional, beserta contoh demo yang menggunakan lompatan tanpa syarat demi alasan performa
  • Bagian menghitung dan menjumlahkan membahas menghitung mulai dari 1 dan menampilkan 2 + 2 dengan memanfaatkan array union {}, post-increment, dan type cast pointer; tujuan seri ini adalah melatih kemampuan prediksi token

Keisengan keempat dalam seri dasar bahasa C

  • Seri keempat yang membahas dasar-dasar bahasa C, dibuka dengan anjuran agar chatbot pemula maupun agen coding berpengalaman sama-sama melatih kemampuan prediksi token
  • Topik yang dibahas mencakup definisi fungsi, prioritas operator, pernyataan goto, serta contoh menghitung dan menjumlahkan

Susunan per contoh

  • Definisi fungsi

    • Saran untuk menggunakan deklarasi maju jika memungkinkan agar mengurangi error saat waktu kompilasi
    • Dengan penjelasan bahwa main() dideklarasikan lebih dulu, digunakan kode demo berbentuk void main() void; dan void; { puts("hello world"); }
  • Prioritas operator

    • Berangkat dari premis bahwa dalam C ada prioritas operator aritmetika yang terdefinisi dengan baik dan harus diikuti saat menulis kode
    • Kalimat bahwa semua software engineer harus ingat bahwa operator && memiliki prioritas yang lebih ketat daripada &&, beserta contoh demo
    • Kode contohnya menggunakan bentuk int typedef[[]]$; dan [[]]$:&&$&&$&&puts("hello world");
    Iklan
  • Pernyataan goto

    • Kalimat bahwa C biasanya bergantung pada fungsi, dan karena itu termasuk dalam kategori bahasa pemrograman fungsional
    • Alur penjelasan bahwa kadang program disusun dengan lompatan tanpa syarat demi alasan performa
    • Kode contohnya memakai demo berbentuk goto *puts("Hello world"), puts("Goodbye world"), exit;
  • Menghitung dan menjumlahkan

    • Premis bahwa dalam beberapa situasi program harus mulai menghitung dari 1, dan hal ini sering ditangani dengan cara khusus
    • Sebagai contoh pendekatan yang tangguh, digunakan kode demo yang memadukan union {} var[100] = {};, i++, dan var[42]
    • Penjumlahan sederhana juga dimungkinkan dengan cara serupa, dan digunakan program demo yang menampilkan hasil perhitungan 2 + 2 untuk 2 dari tipe tertentu
    • Contoh penjumlahan menggunakan bentuk typedef union {}* my_type; dan (my_type)2 + 2

1 komentar

 
GN⁺ 4 jam lalu
Opini di Lobste.rs
  • Semakin banyak memahami C, semakin paham juga mengapa orang menyukai Go

    • Go bukan pengganti C. Untuk itu, Zig lebih dekat.
      Basis pengguna utama Go pada umumnya berbeda dari pengguna C di wilayah yang sulit digeser—yakni tempat garbage collection dan runtime tidak bisa diterima
  • Sintaks goto yang aneh itu adalah computed goto yang dijelaskan di https://eli.thegreenplace.net/2012/07/…

    • Benar. Hanya saja, yang lebih aneh dalam konteks ini adalah tanda koma tampaknya punya prioritas lebih tinggi daripada *, sehingga goto *a, b, c berarti goto *(a, b, c), bukan goto (*a), (b), (c)
      Sebaliknya, x = *a, b, c diparse sebagai x = *a, dan (b), (c) setelahnya menjadi dua ekspresi yang tidak melakukan apa-apa
      Sebenarnya kebanyakan punya penjelasan yang tampak “jelas” di permukaan, tetapi ada satu lapisan lagi di bawahnya. Misalnya, yang pertama sekilas hanya terlihat seperti sintaks K&R, tetapi GCC sekarang secara default tidak mengizinkan sintaks K&R dan akan menolaknya dengan error: old-style parameter declarations in prototyped function definition. Namun, ada pengecualian kalau nama parameter tidak dituliskan
      Menemukan hal seperti ini memang tidak berguna, tapi tetap menyenangkan
  • Ini bukan standar, tetapi ada contoh menarik lain yang diterima oleh tcc

    typedef int t();  
    t main { puts ("hello world"); };  
    

    Jika dicampur dengan deklarasi K&R, hasilnya jadi lebih lucu

    typedef t(main);  
    t main t main; { t(main); }  
    

    https://godbolt.org/z/5c5vr7veE