01 //lazy.c -- Short cut evaluation (Lazy evaluation) 02 //@CopyLeft by tsaiwn@csie.nctu.edu.tw 03 #include 04 int count = 0; 05 int gg( ) { 06 static int y = 36; 07 printf(" gg will return %d at %d\n", y, ++count); 08 return y++; 09 } 10 int main( ) { 11 if( gg( ) >= 38 && (gg( )%2 !=0) ) printf("Hahaha\n");else printf("ggyy\n"); 12 printf("---\n"); 13 if( gg( ) >= 38 && (gg( )%2 !=0) ) printf("Hahaha\n"); else printf("ggyy\n"); 14 printf("--- ---\n"); 15 if( gg( ) >= 38 && (gg( )%2 !=0) ) printf("Hahaha\n"); else printf("ggyy\n"); 16 printf("--- --- ---\n"); 17 if( gg( ) >= 38 && (gg( )%2 !=0) ) printf("Hahaha\n"); else printf("ggyy\n"); 18 printf("=== ===\n"); 19 if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); 20 printf("--- --- --- ---\n"); 21 if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); 22 printf("--- --- --- --- ---\n"); 23 if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); 24 printf("=== ===\n"); printf("gg ====== %d\n", gg( ) ); printf("=== --- ===\n"); 25 if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); 26 printf("=== === ===\n"); 27 if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); 28 if( 49 > 38 && gg( ) >= 38)printf("HeeHee\n"); else printf("Hey\n"); 29 if( 23 > 38 && gg( ) >= 38)printf("HeeHee\n"); else printf("Hey\n"); 30 if( 49 > 38 || gg( ) >= 38)printf("HeeHee\n"); else printf("Hey\n"); 31 printf(" count = %d\n", count); 32 printf("Hit ENTER key..."); getchar( ); 33 return 0; 34 } /****************************************** 35 gg will return 36 at 1 36 ggyy 37 --- 38 gg will return 37 at 2 39 ggyy 40 --- --- 41 gg will return 38 at 3 42 gg will return 39 at 4 43 Hahaha 44 --- --- --- 45 gg will return 40 at 5 46 gg will return 41 at 6 47 Hahaha 48 === === 49 gg will return 42 at 7 50 ggyy 51 --- --- --- --- 52 gg will return 43 at 8 53 gg will return 44 at 9 54 Hahaha 55 --- --- --- --- --- 56 gg will return 45 at 10 57 gg will return 46 at 11 58 Hahaha 59 === === 60 gg will return 47 at 12 61 gg ====== 47 62 === --- === 63 gg will return 48 at 13 64 ggyy 65 === === === 66 gg will return 49 at 14 67 gg will return 50 at 15 68 Hahaha 69 gg will return 51 at 16 70 HeeHee 71 Hey 72 HeeHee 73 count = 16 74 Hit ENTER key... 75 ******************************************************/