Diyelim ki C'deki iki dizgiyi birleştiren bir işlev yazmak istiyorum. Yazacağım şekilde:
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';
}
Bununla birlikte, K & R kitaplarında özellikle farklı süre döngüsünün koşulu dahil olmak üzere kitapta farklı şekilde uygulanmıştır:
void concat(char s[], char t[]){
int i, j;
i = j = 0;
while (s[i] != '\0') i++;
while ((s[i++]=t[j++]) != '\0');
}
Hangi yol tercih edilir? K & R'nin yaptığı gibi kod yazması teşvik edilir mi yoksa önerilmez mi? Sürümümün diğer insanlar tarafından okunmasının daha kolay olacağını düşünüyorum.
while (*s++ = *t++); (Şokum çok paslı, operatör önceliği için orada ebeveynlere ihtiyacım var mı?) K & R kitaplarının yeni bir versiyonunu yayınladı mı? Orijinal kitaplarının çok özlü ve deyimsel kodu vardı.
'\0'dan t( whileilk çıkışlarında). Bu, sonuçlanan sdizgiyi sonlandırmadan bırakır '\0'(bellek konumu zaten sıfırlanmadıysa). İkinci kod bloğu '\0', whiledöngüden çıkmadan önce sonlandırmanın kopyasını alacaktır .

