29 Kasım 2011 Salı

atama işlemleri

AŞAĞIDAKİ KODLARIN İŞLEM SONUÇLARI KAÇTIR?

SORU-1
int k=0, m, n=7;
n = k++  +  --n;

SORU-2
int k=5, m, n=2;
m = --k  +  n;


SORU-3

int i, j, k;
  i = 2;
  j = 3 + i++;
  k = 3 + ++i;
i *= ++k + j--;
  i /= k-- + ++j;




SORU-4

int i = 0, j = 6,k = 4,m = 5;
  m = k-- + ++i;

SORU-5
int i = 0, j = 6, k=4 ,m=5;
m *= j % 4;

SORU-6
int i = 0, j=6, k=4 , m=5;
 
m += k++ + (j-- * ++i);

7 yorum:

  1. blogun atama işlemeri ksmındaki 6 soru için değişkenlerin son değerlerini nelerdir yazınız?

    YanıtlaSil
  2. int k=0, m, n=7;
    n = k++ + --n;
    ilk önce k'yı 2 kez arttır; sonra atama yap diyor yani k=2, sonra n'i 2 eksilt sonra atama yap diyor yani n=5 bence sonuç böyle...

    YanıtlaSil
  3. int k=5, m, n=2;
    m = --k + n;
    sanırım k'yı 2 kez eksilt diyor yani
    k = 3 3 + 2 = 5

    YanıtlaSil
  4. int i = 0, j=6, k=4 , m=5;

    m += k++ + (j-- * ++i); bunu pek anlamadım :(

    YanıtlaSil
  5. int k=0, m, n=7;
    n = k++ + --n;
    ilk önce k'yı 2 kez arttır; sonra atama yap diyor yani k=2, sonra n'i 2 eksilt sonra atama yap diyor yani n=5 bence sonuç böyle...

    önce bi düzeltme yapayım
    m=k++ + --n; olacaktı yanlış yazmışım. neyse
    cevabında k 2 kez artmıyor k bir arttırılıp sonra toplanıyor ama ++ değişkenden sonra yazıldığı için toplama yapılıpdıktan sonra k bir artıyor. n değişkeninin önünde -- olduğu için önce n bir azaltılıyor sonra toplanıyor.
    yani k ile (n-1)--n toplanıyor sonuç m aktarılıyor sonrada k 1 arttırılıp k ya aktarılıyor.

    YanıtlaSil
  6. int k=5, m, n=2;
    m = --k + n ise -- k nın önünde olduğundan önce eksiltme yapılıyor sonra n ile toplanıyor.
    4 + 2=6 m ye aktarılır.
    m=6 k=4 ve n=2

    YanıtlaSil
  7. int i = 0, j=6, k=4 , m=5;

    m += k++ + (j-- * ++i);
    işlem önceliği önce
    parantez içi
    üs
    çarpma
    bölme
    toplama
    çıkarma
    int i = 0, j=6, k=4 , m=5;
    m += k++ + (j-- * ++i);
    6 * 1 i' yi 1 arttır ++ önde
    6 çarp sonra j 1 eksilt j=5
    4++ + 6 4 ile 6 topla
    10 ++ arkada olduğunda işlemden sonra arttırma yapılır. k=5
    m+=10 m=m+ 10 demek
    5+10=15
    m=15, k=5 j=5 i=1

    YanıtlaSil