, , , .
C99 (6.5/3 ):
, ( -(), &, ||,?: ), , , .
, foo() . , 2 counter() . - :
, , , (, , ), : .
, ( ), - , foo(). , , ( , , ):
#include <stdio.h>
int i = 1;
int counter1(){
i = i * 3;
printf( "counter1()\n");
return i;
}
int counter2(){
i = i * 5;
printf( "counter2()\n");
return i;
}
int foo(int i, int j){
return i + j;
}
int main(){
int x;
for (x=0; x<2; ++x) {
printf("%d\n", foo(counter1(), counter2()));
}
return 0;
}
, ( ):
1:
counter1()
counter2()
18
counter1()
counter2()
270
2:
counter1()
counter2()
18
counter2()
counter1()
300
3:
counter2()
counter1()
20
counter2()
counter1()
300
( ), - , , , .
, "", , ( ), / , , .
, , .
, , - , , .