Mam prosty kod C i duże zamieszanie dotyczące wyrażeń zawierających operator (y) przecinka().W C, dlaczego wyrażenie (Statement) zbiegające przecinek (,) operator działa inaczej
int main(){
int i=0,j=11,c;
c=i=j,++i;
printf("c=%d i=%d\n",c,i);
c=(i=j,++i);
printf("c=%d i=%d\n",c,i);
return 0;
}
Powyższe drukuje kod:
c=11 i=12
c=12 i=12
moje pytania są następujące:
- Jaka jest rzeczywista praca z przecinkiem (,) jako operatora?
++
ma wyższy priorytet niż,
i=
, dlaczego ocena jest wykonywana dla wyrażenia po lewej stronie przecinka?- Jaka będzie kolejność, jeśli wyrażenie zawiera operatorów o innym priorytecie, czy będzie to zależne od przecinka (,)?
- Czy zachowuje się jak substytut średnika (;)?
Nie jestem ekspertem, ale to 'c = i = j, ++ I' wygląda U.B. –
@MargaretBloom Nie, operator przecinka wprowadza punkt sekwencji, IIRC. –
http://stackoverflow.com/questions/2087026/effect-of-using-a-omma-instead-of-a-semi-colon-in-c-and-c – Turamarth