2016-11-07 47 views
5

Temel bir sorum var, bu beni çok fazla rahatsız ediyor ve bir programcının neden onu kullandığını anlayamıyorum.Neden (Indx == 0) - koşul (0 == Indx) yerine kullanılırsa bir fark var mıdır?

if (0 == Indx) 
{ 
    //do something 
} 

Yukarıdaki kod ne yapar ve aşağıdakilerden farklıdır.

if (Indx == 0) 
{ 
    // do something 
} 

Ben gömülü sistemler için yazılmış bazı kaynak kodu anlamaya çalışıyorum.

+2

http://c-faq.com/style/revtest.html –

+1

Bu [Yoda notasyonu] (https://en.m.wikipedia.org/wiki/Yoda_conditions) – nakano531

+3

Yoda şartlı olarak adlandırılır. 1980'lerde bu şekilde koşulların yazılması yararlı oldu, çünkü eğer sizden yanlışlıkla yazdıysanız (Indx = 0) 'derleyiciler size bir uyarı vermezler. Günümüzde, her iyi derleyici size bir uyarı verecek, bu yüzden Yoda şartlılıkları stilden düştü. Elbette, her zamanki gibi, eski fikirler asla ölmez, sadece destekçileri yapar. – user3386109

cevap

8

Bazı programcılar bu kullanmayı tercih:

if (0 == Indx) 

çünkü bu hat

if (Indx == 0) 

"kolayca"

if (Indx = 0) //assignment, not comparison. 
(yerine karşılaştırmanın) bir atama deyimi gibi yanlışlıkla kodlanabilir

Ve bu tamamen C.

geçerli 10

Indx = 0, 0 döndüren bir ifadedir (bu da 0 ile Indx değerini atar).

Bu cevabın yorumlarında da belirtildiği gibi, modern derleyiciler, eğer bir ödevin içinde böyle bir ödeve sahip olmanız durumunda size uyarı verecektir.

Avantajlarınız ve dezavantajlarınız hakkında daha fazla bilgiyi here adresinden edinebilirsiniz.

+2

Bu Sadece ölmeyecek olanlardan biri. Modern derleyiciler bunun için uyarı veriyor. Bundan yararlan. – Arkadiy

+0

@Arkadiy Bu konuda kişisel görüşümü hiç bir zaman dile getirmedim, size katılıyorum ya da olmayabilir. Sadece soruyu cevaplamaya çalışıyorum, "Bir programcının neden kullandığını anlayamıyorum?" –

+0

Kişisel fikriniz hakkında hiçbir şey söylemedim ya :). Daha modern yaklaşımdan da bahseder misiniz? – Arkadiy