Rozważmy następujący kod urywki Przypadek 1:Dlaczego istnieją różnice w działaniu operatora przecinka w poniższych kodach?
int main()
{
int a;
a=printf("hello"),printf("joke");
printf("%d",a);
return 0;
}
Przypadek 2:
int main()
{
int a;
a=(printf("hello"),printf("joke"));
printf("%d",a);
return 0;
}
Case3:
int main()
{
int a;
a=10>8?(printf("hello"),printf("joke")):printf("hello");
printf("%d",a);
return 0;
}
Case4:
int main()
{
int a;
a=10>8?printf("hello"),printf("joke"):printf("hello");
printf("%d",a);
return 0;
}
Nie jestem w stanie wyłapać powodu, dla którego kiedy używam paranthezy w przypadku 2, otrzymuję wyjście jako hellojoke4, podczas gdy bez użycia parantheis otrzymuję wyjście jako hellojoke5.
Tak jak na wyjściu, kiedy próbowałem używać operatora trójskładnikowego, to samo wyrażenie, gdy wykonywane jest przy pomocy paranthezy lub bez użycia paranthezy, zwraca ostatnią wartość wyjściową instrukcji printf, która jest hellojoke4, więc w jaki sposób zachowanie różni się w przypadek operatora trójskładnikowego. A w jaki sposób obecność paranteza wpływa na działanie przecinka, działa jak separator lub jako operator
Pomyśl o tym. Co może zrobić nawias w tym przypadku? – juanchopanza
'int a = (1,2);' ',' ma niższy priorytet, więc 'a = 2' – Gopi