Mari kita asumsikan saya ingin menulis fungsi yang menggabungkan dua string dalam C. Cara saya akan menulisnya adalah:
void concat(char s[], char t[]){
int i = 0;
int j = 0;
while (s[i] != '\0'){
i++;
}
while (t[j] != '\0'){
s[i] = t[j];
i++;
j++;
}
s[i] = '\0';
}
Namun, K&R dalam buku mereka menerapkannya secara berbeda, terutama termasuk sebanyak mungkin dalam bagian loop sementara:
void concat(char s[], char t[]){
int i, j;
i = j = 0;
while (s[i] != '\0') i++;
while ((s[i++]=t[j++]) != '\0');
}
Cara mana yang lebih disukai? Apakah didorong atau tidak disarankan untuk menulis kode seperti yang dilakukan K&R? Saya percaya versi saya akan lebih mudah dibaca oleh orang lain.
while (*s++ = *t++); (C saya sangat berkarat, apakah saya perlu parens di sana untuk diutamakan operator?) Apakah K&R merilis versi baru dari buku mereka? Buku asli mereka memiliki kode yang sangat ringkas dan idiomatik.
'\0'dari t( whilekeluar pertama). Ini akan meninggalkan sstring yang dihasilkan tanpa berakhir '\0'(kecuali lokasi memori sudah memusatkan perhatian). Blok kode kedua akan membuat salinan terminating '\0'sebelum keluar dari whileloop.

