SORU
13 EKİM 2014, PAZARTESİ


Neden mantıklı ve C kısa devre olmadığını gösteren davranış bu sürümü?

Evet, bu Ödev bir soru, ama benim araştırma yapmak ve konu hakkında derin düşünce adil bir miktar yaptım bu şekil dışarı çıkamıyorum. Soru bu kod parçası short-circuit behavior gösteren ve neden diye sorar belirtir. Kısa devre davranışlar yok gibi görünüyor ama öyle biri değil neden açıklayabilir mi?

C:

int sc_and(int a, int b) {
    return a ? b : 0;
}

a yanlış olduğu durumda, program b değerlendirmek denemez bana öyle görünüyor, ama yanılmış olmalıyım. Neden program bile gerek yok bu durumda b dokunma, değil mi?

CEVAP
13 EKİM 2014, PAZARTESİ


Bu hileli bir soru. b sc_and yöntemi için giriş bağımsız değişken ve her zaman değerlendirilecektir. Diğer kelimeler sc_and(a(), b()) Ara a() ve Ara b() (sipariş garanti), çağrı sc_and sonuçlar a(), b() geçer a?b:0. Kesinlikle kısa devre olan üçlü operatör kendisi ile hiç bir alakası yok,.

GÜNCELLEME

Açısından neden aradım bu bir 'tuzak soru': çünkü Bu eksikliği iyi tanımlanmış içerik için nereye düşünün 'kısa devre' (en azından yeniden tarafından OP). Sadece bir fonksiyon verildiğinde pek çok kişi, tanımı,soru içeriği hakkında sorular sormaya olduğunu varsayalımvücutişlevi; genellikle kendi başına bir ifadesi olarak işlev görmüyor. Bu 'hile' sorusuna; hatırlat da sana bu program, genel olarak, ama özellikle dil gibi C-seviyor genelde çok özel durumlar için kurallar, bunu yapamazsınız. Eğer soru olarak soruldu: (mesela

Aşağıdaki kodu göz önünde bulundurun. Sc_and çağrıldığında kısa devre davranışı exibitana:

int sc_and(int a, int b){
    return a?b:0;
}

int a(){
    cout<<"called a!"<<endl;
    return 0;
}

int b(){
    cout<<"called b!"<<endl;
    return 1;
}

int main(char* argc, char** argv){
    int x = sc_and(a(), b());
    return 0;
}

Hemen bir operatör gibi sc_and düşünüyor olmalı kendi içinde ve kendisini olduğunuz açık olurduetki alanına özel dilve eğer değerlendirmeksc_and sergiler için çağrı && düzenli gibi kısa devre davranışı. Olmaz düşünün bunu hileli bir soru, çünkü temiz değilsin gerekiyor odaklanmak üçlü operatör ve yerine sözde odaklanmak C/C 'nin fonksiyonu-çağrı mekaniği (ve, bununla uğraştım, neden güzel bir takip soru yazmak sc_and kısa devre, hangisi dahil kullanarak bir #define yerine bir fonksiyon).

Olsun veya olmasın dediğiniz üçlü operatör kendisi yapar kısa devre (veya başka bir şey gibi 'koşullu değerlendirme') insanın tanımına bağlı kısa devre yapıyor ve okuma çeşitli yorumlar için düşünceler. Benimki yapar, ama asıl soru tamamen alakalı değil ya da bu bir neden aradım,''. hile

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • esnathesinger

    esnathesinge

    6 NİSAN 2009
  • Nick Pitera

    Nick Pitera

    8 NİSAN 2006
  • YouChewBu

    YouChewBu

    26 Ocak 2009