ausdruck_1, ..., ausdruck_nDie Ausdrücke werden von links nach rechts ausgewertet.
Anwendung findet dies mitunter bei der Formulierung von for-Anweisungen.
Beispiel:
Aufbau einer Einheitsmatrix
#include <stdio.h>
int main(void)
{
int a[3][3];
int i, j;
for ( i=0; i<3; i++ )
for ( j=0; j<3; j++ )
a[i][j] = 0;
for ( i=0, j=0; i<3, j<3; i++, j++ )
a[i][j] = 1;
for ( i=0; i<3; i++ ) {
for ( j=0; j<3; j++ )
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
Ein etwas exotischeres Beispiel:
#include <stdio.h>
void output(int a, int b, int c)
{
printf("a = %d, b = %d, c = %d\n", a, b, c);
}
int main(void)
{
int x = 4, y = -8, z = 2;
output(x, y, z);
output(x, (z=2*z, -z), z);
output(x, y, z);
z = (x=7, x+1);
output(x, y, z);
return 0;
}
Interessant ist, welcher Wert für c beim zweiten Aufruf von
output ausgegeben wird. Hier zeigt sich bei verschiedenen C-Systemen
unterschiedliches Verhalten !
gcc unter DOS a = 4, b = -8, c = 2 a = 4, b = -4, c = 2 a = 4, b = -8, c = 4 a = 7, b = -8, c = 8 MSC 6.0 unter DOS a = 4, b = -8, c = 2 a = 4, b = -4, c = 4 a = 4, b = -8, c = 4 a = 7, b = -8, c = 8 MSCV 1.0 unter Windows a = 4, b = -8, c = 2 a = 4, b = -4, c = 2 a = 4, b = -8, c = 4 a = 7, b = -8, c = 8Hinweis:
output(x, (z=2*z, -z), z);ein Aufruf von output mit drei Aufrufparametern.
output(x, z=2*z, -z, z);wäre ein (unzulässiger) Aufruf mit vier Parametern !