16 Eylül 2019 Pazartesi

Comma Operator Sequence Point'i

Giriş
Açıklaması şöyle
A pair of expressions separated by a comma is evaluated left-to-right; the left expression is a discarded-value expression (Clause [expr]). Every value computation and side effect associated with the left expression is sequenced before every value computation and side effect associated with the right expression.
Örneğin comma operator bir sequence point'tir ve işleme soldan sağa doğrudur. f (), g () çağrısında önce f () işletilir.

Örnek
i ve j sıfır ise soldan sağa işletilen kod sonucunda i=2 j=1 çıkar.
i = ++j, j = i++;
Örnek
Şöyle yaparız. Önce f() çağrılır, daha sonra g() çağrılır
f(x++), g(x++);
Örnek
Comma Operator Sequence Point return cümlesi için de geçerlidir. Elimizde şöyle bir kod olsun.
int fun(int x)
{
  return (x=x+2,x+1); //[A]
}

int main()
{
  int x=5;
  x=fun(x);
  printf("%d",x); // Output is 8
}
Bu kod aslında şöyledir. Sonuç olarak 8 verir.
x = x + 2; // x == 7
return x + 1; // returns 8


Hiç yorum yok:

Yorum Gönder