2016-04-12 19 views
1

Bir dizede bir alt dizgi bulmaya çalışıyorum. Bunu yaparken, biz condition1 değeri bulundu ve daha sonra atılırc döngüsünde birden çok koşul için

for(i=0;condition1,condition2;i++) 

yazarsanız o for birden koşulları kontrol etmek anladı. Ardından, condition2 değeri bulunur ve döndürülür. Bunun için, here'daki for döngüsüyle kontrol edilecek birden fazla koşul olması durumunda &&'u kullanmamız gerekiyor.

for(i=0;condition1&&condition2;i++) 

Şimdiye kadar ben doğru anladım inanıyorum ama şu for döngü çalışmıyor.

for(i=0;(a[i]!='\0')&&(a[i]==b[0]);i++) 
    { 

     j=i+1; 
     k=1; 
     while(a[j]==b[k]&&a[j]!='\0'&&b[k]!='\0') 
     { 

     j++; 
     k++; 
     } 
     if(b[k]=='\0') 
     { 
     return i; 
     } 

    } 
    return -1; 

yukarıda for döngü yazdığı

, kontrol döngü giriyor ve aşağıdaki kodu, kontrol daha for döngü girme değilken, işlemleri ve doğru çalışmaktadır.
for(i=0;a[i]!='\0';i++) 
    { 
    if(a[i]==b[0]) 
    { 
     j=i+1; 
     k=1; 
     while(a[j]==b[k]&&a[j]!='\0'&&b[k]!='\0') 
     { 
     j++; 
     k++; 
     } 
     if(b[k]=='\0') 
     { 
     return i; 
     } 
    } 
    } 

for döngüler i dahili işleme ilişkin Eksik bir şey var mı? İkisinin de çalışması gereken yolun aynı olduğuna inanıyorum. Bu konuda herhangi bir yardım mutluluk duyacağız.

+0

Lütfen basit bir soruya cevap verin: '&&' nasıl adlandırılır? Aslında ne yapıyor? Anında cevap veremiyorsanız, önce temel bilgileri almak için lütfen bir C kitap okuyun. Yazdıklarınızı anlamak için gereken bütün resmi alamayacaksınız. – Olaf

+0

'&&r, birden çok koşulu denetler ve true veya false @Olaf – yash

+0

Soruları yanıtlamadınız. Ciddi (ve rahatsız edici değil): Lütfen öğren. – Olaf

cevap

0

ilk kod snippet'inizde for döngüsünüzün iki koşulu vardır. bunlardan birinin doğru olmadığını hatırla, döngü hemen sona erecek.

kodunun ikinci kod snipped içinde sadece for döngüsünde bir koşul var. İkinci koşul, bir if kasasının içinde. Yani if koşul2 yanlış if durumda yürütülmez, ancak for döngü devam edecek.

+0

lanet olsun, o basit @RomCoo'nun mantığını nasıl özlediğimi bilmiyordum. çok teşekkür ederim – yash

0

Bu kod blokları aynı şeyi yapmaz. İlkinde, koşul sağlanmıyorsa, döngü için yineleme durur. İkinci koşulda, ilk koşul yerine getirilmezse, for döngüsü yinelemeyi durdurur, ikincisi karşılanmazsa dahili kod yürütülmez, ancak for döngüsü devam eder.

& & operatörüne ilişkin olarak .... SIPRAKTÖRÜN tüm koşullarını değerlendirir ve false olarak değerlendirilen tek bir bileşene ulaştığı anda durur ve false değerini değerlendirir. Eğer herhangi bir yanlış koşula koşmazsa, doğru olarak değerlendirilecektir.