//lazy.c  -- Short cut evaluation (Lazy evaluation)
//@CopyLeft by tsaiwn@csie.nctu.edu.tw
#include <stdio.h>
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...
******************************************************/
