/* Conformance Test 3.5.4.2:  Verification of #elif character constant */
/*                            expressions                              */

int printf(const char *, ...);

#define FIVE '5'
#define SIX  '6'

#if 0
   #define NUM1 0
#elif  '2' * '8'
   #define NUM1 '2' * '8'
#else
   #define NUM1 0
#endif

#if 0
   #define NUM2 0
#elif  '4' / '3'
   #define NUM2 '4' / '3'
#else
   #define NUM2 0
#endif

#if 0
   #define NUM3 0
#elif 'b' - 'a'
   #define NUM3 'b' - 'a'
#else
   #define NUM3 0
#endif

#if 0
   #define NUM4 0
#elif '\r' + '\f'
   #define NUM4 '\r' + '\f'
#else
   #define NUM4 0
#endif

#if 0
   #define NUM5 0
#elif ('p' == '\x70')
   #define NUM5 (('\p') == '\x70')
#else
   #define NUM5 0
#endif

#if 0
   #define NUM6 0
#elif ('\001' != 0)
   #define NUM6 ('2'*'8') | ('4'/'3') ^ ('A'-'b')\
                                    & ('\r'+'\f')
#else
   #define NUM6 0
#endif

#if 0
   #define NUM7 0
#elif ('6' < '7')
   #define NUM7 '6' < '7'
#else
   #define NUM7 0
#endif

#if 0
   #define NUM8 0
#elif ('2' <= '2')
   #define NUM8 '2' <= '2'
#else
   #define NUM8 0
#endif

#if 0
   #define NUM9 0
#elif ('8' > '7')
   #define NUM9 '8' > '7'
#else
   #define NUM9 0
#endif

#if 0
   #define NUM10 0
#elif ('0' >= '0')
   #define NUM10 '0' >= '0'
#else
   #define NUM10 0
#endif

#if 0
   #define NUM11 0
#elif (('\n') && ('\003'))
   #define NUM11 (('\n') && ('\003'))
#else
   #define NUM11 0
#endif

#if 0
   #define NUM12 0
#elif ((0) || ('d'))
   #define NUM12 'z' % '0' << '\01' >> '\x2'
#else
   #define NUM12 0
#endif

#if 0
   #define NUM13 0
#elif -('\x7f')
   #define NUM13  (-('\x7f'))
#else
   #define NUM13 0
#endif

#if 0
   #define NUM14 0
#elif ~('\0')
   #define NUM14 ~'\0'
#else
   #define NUM14 0
#endif

#if 0
   #define NUM15 0
#elif !0
   #define NUM15 NUM1 ? NUM2 : 187
#else
   #define NUM15 0
#endif

#if 0
#elif (defined(FIVE)) && (defined(SIX)) && (NUM1 == 0xAF0) && (NUM2 == 1)\
       && (NUM3 == NUM2)
int main (void)
  {
   if (NUM1    != 2800  )  goto Fail;
   if (NUM2    != 1     )  goto Fail;
   if (NUM3    != 1     )  goto Fail;
   if (NUM4    != 25    )  goto Fail;
   if (NUM5    != 1     )  goto Fail;
   if ((NUM6)  != 0xAF8 )  goto Fail;
   if (NUM7    != 1     )  goto Fail;
   if (NUM8    != 1     )  goto Fail;
   if (NUM9    != 1     )  goto Fail;
   if (NUM10   != 1     )  goto Fail;
   if (NUM11   != 1     )  goto Fail;
   if (NUM12   != 13    )  goto Fail;
   if (NUM13   != -127  )  goto Fail;
   if (NUM14   != -1    )  goto Fail;
   if ((NUM15) != 1     )  goto Fail;

   printf ("Passed Conformance Test 3.5.4.2\n");
   return 0;

Fail:
   printf ("Failed Conformance Test 3.5.4.2; location 1\n");
  }

#else
int main (void)
  {
   printf ("Failed Conformance Test 3.5.4.2; location 2\n");
  }
#endif
