Sorunuzu C ve C ++ ile aynı anda etiketlediniz, bununla birlikte cevap bu dillerde oldukça farklı.
İlk olarak, sorunuzun başlığının ifadesi yanlıştır (ya da daha doğrusu sorunun kendisiyle ilgisi yoktur). Her iki örneğinizde değişken aynı anda, tek bir satırda bildirilir ve tanımlanır . Örnekleriniz arasındaki fark, ilkinde, değişkenlerin başlatılmamış bırakılması veya kukla bir değerle başlatılmasıdır ve daha sonra anlamlı bir değerin atanmasıdır . İkinci örnekte, değişkenler hemen başlatılır .
İkincisi, C ++ dilinde, @ nightcracker'ın cevabında belirtildiği gibi, bu iki yapı anlamsal olarak farklıdır. Birincisi, ilkini yaparken atama üzerine, ikincisi ise atama üzerine güveniyor. C ++ 'da bu işlemler aşırı yüklenebilir ve bu nedenle potansiyel olarak farklı sonuçlara yol açabilir (bir tanesi eşdeğer olmayan başlatma ve tahsis aşırı yüklerinin üretilmesinin iyi bir fikir olmadığını belirtebilir).
Orijinal standart C dilinde (C89 / 90) bloğun ortasındaki değişkenleri bildirmek yasa dışıdır; bu nedenle, blokların başında başlatılmamış (veya yapay değerlerle başlatılmış) ve ardından anlamlı atanmış değişkenler görebilirsiniz Değerler sonra, bu anlamlı değerler mevcut olduğunda.
C99 dilinde değişkenleri bloğun ortasına bildirmek uygundur (tıpkı C ++ 'da olduğu gibi); (Bu, C ++ için de geçerlidir).