/** not.c test ! operator ANSI: return type is int attr: volatile, */ #include void testNot(void) { signed char {attr} sc; unsigned char {attr} uc; unsigned int {attr} ui; unsigned long {attr} ul; sc = 0; uc = 0; ui = 0; ul = 0; /* remember: unsigned * signed -> unsigned */ /* signed * signed -> signed */ ASSERT(!( signed char) 0 * -1 < 0); ASSERT(!(unsigned char) 0 * -1 < 0); ASSERT(!sc * -1 < 0); ASSERT(!uc * -1 < 0); ASSERT(! 0 * -1 < 0); ASSERT(! 0u * -1 < 0); ASSERT(!ui * -1 < 0); ASSERT(! 0l * -1 < 0); ASSERT(! 0ul * -1 < 0); ASSERT(!ul * -1 < 0); ASSERT(!(char) 0 << 8 == 0x100); ASSERT(!sc << 8 == 0x100); #if !defined(PORT_HOST) ASSERT(!0 << 16 == 0); ASSERT(!0l << 16 == 0); ASSERT(!ui << 16 == 0); ASSERT(!ul << 16 == 0); #endif }