SORU
10 Mart 2009, Salı


Kısa-devre boolean operatörler C/C zorunlu ? Ve değerlendirme sırası mı?

ANSI Standardı yokmandamantık operatörleri kısa devre, ya da C veya C ?

Olmayabilir K&R kitap kodunuzu bu işlemleri kısa devre yapmış olması şartına bağlı olmamalı söylediklerini hatırlıyorum için kafam karıştı. Birisi standart mantık ops her zaman kısa devre vardır dedi Bu yere gelin misiniz? C , bir cevap da C için daha çok ilgimi çekti harika olurdu.

Ben de hatırlıyorum okuma (hatırlayamıyorum) bu değerlendirme sırası değil kesinlikle tanımlanmış, böylece kodunuzu gerekmez mi bağlı veya kabul işlevlerde bir ifade olurdu yürütülen bir özel sipariş: sonuna kadar bir açıklama başvurulan tüm fonksiyonları olacak alındığını, ancak derleyici var özgürlük seçme en verimli bir sipariş.

Standart bu ifade değerlendirme sırasını gösteriyor mu?

if( functionA() && functionB() && functionC() ) cout<<"Hello world";

CEVAP
10 Mart 2009, Salı


Evet, kısa devre ve değerlendirme amacıyla operatörler || ve her ikisi de C ve C standartları && için gereklidir.

C standart diyor (C standardı ya da eşdeğer bir fıkra olmalı):

1.9.18

Aşağıdaki deyimleri

a && b
a || b
a ? b : c
a , b

bu ifadeler, operatörler yerleşik anlamını kullanarakilk yorumuna sonra sıra bir nokta var(12).

Ekstra bir tuzak var C: kısa devre yaparDEĞİLaşırı operatörler || && türleri için geçerli.

Dipnot 12: operatörler bu fıkraya Madde 5'de açıklandığı gibi, yerleşik operatörler,. Ne zaman biri bu operatörler ise aşırı (madde 13) geçerli bir bağlam, böylece belirleme kullanıcı tanımlı bir operatör fonksiyonu, ifadesi belirtir bir fonksiyon çağırma ve işlenen formu bir bağımsız değişken listesiaralarında zımni bir sıra nokta olmadan.

Çok özel bir gereksinim yoksa genellikle C bu operatörler aşırı tavsiye edilmez. Bunu yapabilirsin, ama özellikle bu tip operatörler bu operatörler aşırı yükleme ile başlatmasını şablonlar üzerinden dolaylı olarak kullanılıyorsa, diğer insanların kodunu beklenen davranış kır, olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • RD

    RD

    19 NİSAN 2006
  • Sams Page :D

    Sams Page :D

    15 Mart 2009
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005