//lazy.c -- Short cut evaluation (Lazy evaluation) //@CopyLeft by tsaiwn@csie.nctu.edu.tw #include int count = 0; int gg( ) { static int y = 36; printf(" gg will return %d at %d\n", y, ++count); return y++; } int main( ) { if( gg( ) >= 38 && (gg( )%2 !=0) ) printf("Hahaha\n");else printf("ggyy\n"); printf("---\n"); if( gg( ) >= 38 && (gg( )%2 !=0) ) printf("Hahaha\n"); else printf("ggyy\n"); printf("--- ---\n"); if( gg( ) >= 38 && (gg( )%2 !=0) ) printf("Hahaha\n"); else printf("ggyy\n"); printf("--- --- ---\n"); if( gg( ) >= 38 && (gg( )%2 !=0) ) printf("Hahaha\n"); else printf("ggyy\n"); printf("=== ===\n"); if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); printf("--- --- --- ---\n"); if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); printf("--- --- --- --- ---\n"); if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); printf("=== ===\n"); printf("gg ====== %d\n", gg( ) ); printf("=== --- ===\n"); if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); printf("=== === ===\n"); if( (gg( )%2 !=0) && gg( ) >= 38 ) printf("Hahaha\n"); else printf("ggyy\n"); if( 49 > 38 && gg( ) >= 38)printf("HeeHee\n"); else printf("Hey\n"); if( 23 > 38 && gg( ) >= 38)printf("HeeHee\n"); else printf("Hey\n"); if( 49 > 38 || gg( ) >= 38)printf("HeeHee\n"); else printf("Hey\n"); printf(" count = %d\n", count); printf("Hit ENTER key..."); getchar( ); return 0; } /****************************************** gg will return 36 at 1 ggyy --- gg will return 37 at 2 ggyy --- --- gg will return 38 at 3 gg will return 39 at 4 Hahaha --- --- --- gg will return 40 at 5 gg will return 41 at 6 Hahaha === === gg will return 42 at 7 ggyy --- --- --- --- gg will return 43 at 8 gg will return 44 at 9 Hahaha --- --- --- --- --- gg will return 45 at 10 gg will return 46 at 11 Hahaha === === gg will return 47 at 12 gg = 47 === --- === gg will return 48 at 13 ggyy === === === gg will return 49 at 14 gg will return 50 at 15 Hahaha gg will return 51 at 16 HeeHee Hey HeeHee count = 16 Hit ENTER key... ******************************************************/