Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: certy - 26 Temmuz 2019, 00:03:37

Başlık: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: certy - 26 Temmuz 2019, 00:03:37
Merhabalar. Örnek kodda a değişkeni 1 ise a'yı 1'den farklı herhangi bir sayıya eşitliyorum. Bu durumda else kısmı içinde kalan satırlar hemen mi çalışır, yoksa sonraki döngü mü beklenir?

if (a == 1){
   a = 5;
}else {
   .
   .
   .
}
Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: ankyra - 26 Temmuz 2019, 00:14:01
İf teki şart doğru ise else kısmı çalışmaz. A nın değişmiş olması bir sonraki döngüde değerlendirilir.
Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: RaMu - 26 Temmuz 2019, 00:50:57
Sonraki döngü beklenir,
asm çıktısından kontrol edebilirsin veya
debugger ile çalıştırıp deneyebilirsin.
Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: certy - 26 Temmuz 2019, 03:44:29
@ankyra @RaMu

Teşekkürler.
Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: fatal16 - 26 Temmuz 2019, 08:49:04
@certy Hocam eğer a=5 yapıp, a'nın 5 olduğu duruma döngüden çıkmadan gitmesini istiyorsanız switch-case kullanabilirsiniz.

#include <stdio.h>

int main(void) {

  int x = 1;

  switch (x)
  {
    case 1:
      x = 5;
   
    .
    .
    .

    case 5:
      printf("x=%d",x);
      break;
  }

 
  return 0;
}

Tabi burada x'in 5 olduğu durum, 1 olduğu durumun altında yazılmalı.
Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: Cemre. - 26 Temmuz 2019, 13:20:52
Alıntı yapılan: fatal16 - 26 Temmuz 2019, 08:49:04@certy Hocam eğer a=5 yapıp, a'nın 5 olduğu duruma döngüden çıkmadan gitmesini istiyorsanız switch-case kullanabilirsiniz.

#include <stdio.h>

int main(void) {

  int x = 1;

  switch (x)
  {
    case 1:
      x = 5;
   
    .
    .
    .

    case 5:
      printf("x=%d",x);
      break;
  }

 
  return 0;
}

Tabi burada x'in 5 olduğu durum, 1 olduğu durumun altında yazılmalı.

Emin misiniz?

(https://i.ibb.co/mzZyJVC/image.png) (https://ibb.co/f06NMzY)

Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: RaMu - 26 Temmuz 2019, 13:30:37
@fatal16 switch case de dediğin gibi çalışmaz,
tekrar switch satırına gelinmesi lazım ki başka bir case e gidilebilsin.
Switch case aslında bir goto tablosu olarak çalışır,
ard arda yazılmış if koşulları gibi çalışmaz.
Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: Elektroemre - 26 Temmuz 2019, 14:19:56
@fatal16 nın dediği şekilde çalışması için "case 1:" den sonra "break" koymamak gerekiyor.
Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: certy - 26 Temmuz 2019, 16:52:31
Alıntı yapılan: fatal16 - 26 Temmuz 2019, 08:49:04@certy Hocam eğer a=5 yapıp, a'nın 5 olduğu duruma döngüden çıkmadan gitmesini istiyorsanız switch-case kullanabilirsiniz.

#include <stdio.h>

int main(void) {

  int x = 1;

  switch (x)
  {
    case 1:
      x = 5;
   
    .
    .
    .

    case 5:
      printf("x=%d",x);
      break;
  }

 
  return 0;
}

Tabi burada x'in 5 olduğu durum, 1 olduğu durumun altında yazılmalı.

Aslında öyle olması benim için sorun. :) Döngüden çıkıp sonraki döngüyü beklemesi tam olarak istediğim şey. Zaten tam da istediğim gibiymiş.
Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: fatal16 - 27 Temmuz 2019, 09:20:30
@Elektroemre 'nin yazdığı gibi case1'in sonuna break koymazsak (örnekteki gibi) case5'e girer ve ordan break yapar. Ama case1'de x=5 yaptıktan sonra diğer case'lere geçtiğimizde, case'in 5 olup olmadığını kontrol ediyormudu tam emin olamadım. Bir arkadaş derlerse tam öğrenmiş oluruz .
Başlık: Ynt: If sorgusu içinde sorgulanan değişkenin değerini değiştirmek ve Else
Gönderen: Cemre. - 27 Temmuz 2019, 12:57:49
Üzgünüm...

(https://i.ibb.co/h7xs37m/image.png) (https://ibb.co/mDrJfDc)