⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 constantrange.c

📁 sdcc是为51等小型嵌入式cpu设计的c语言编译器支持数种不同类型的cpu
💻 C
字号:
/** constant range tests.*/#include <testfwk.h>#include <stdbool.h>#ifdef __sun__#include <inttypes.h>#else#include <stdint.h>#endif#if defined (__GNUC__) && defined (__alpha__) && (__GNUC__ < 3)/* bool should be casted to int in order to pass the test. Is this a gcc bug? */#define INT_CAST  (int)#else#define INT_CAST#endif int8_t s8;uint8_t u8; int16_t s16;uint16_t u16; int32_t s32;uint32_t u32;voidtestConstantRange (void){  ASSERT (! (INT8_MIN - 1 == s8));  ASSERT (! (INT8_MAX + 1 == s8));  ASSERT (  (INT8_MIN - 1 != s8));  ASSERT (  (INT8_MAX + 1 != s8));  ASSERT (  (INT8_MIN - 1 <  s8));  ASSERT (! (INT8_MAX     <  s8));  ASSERT (  (INT8_MIN     <= s8));  ASSERT (! (INT8_MAX     <= s8));  ASSERT (! (INT8_MIN     >  s8));  ASSERT (  (INT8_MAX + 1 >  s8));  ASSERT (! (INT8_MIN - 1 >= s8));  ASSERT (  (INT8_MAX     >= s8));  ASSERT (! (        0 - 1 == u8));  ASSERT (! (UINT8_MAX + 1 == u8));  ASSERT (  (        0 - 1 != u8));  ASSERT (  (UINT8_MAX + 1 != u8));  ASSERT (  (        0 - 1 <  u8));  ASSERT (! (UINT8_MAX     <  u8));  ASSERT (  (        0     <= u8));  ASSERT (! (UINT8_MAX + 1 <= u8));  ASSERT (! (        0     >  u8));  ASSERT (  (UINT8_MAX + 1 >  u8));  ASSERT (! (        0 - 1 >= u8));  ASSERT (  (UINT8_MAX     >= u8));  /* force extension to long to avoid int (16 bit) overflow */  ASSERT (! (INT16_MIN - 1L == s16));  ASSERT (! (INT16_MAX + 1L == s16));  ASSERT (  (INT16_MIN - 1L != s16));  ASSERT (  (INT16_MAX + 1L != s16));  ASSERT (  (INT16_MIN - 1L <  s16));  ASSERT (! (INT16_MAX      <  s16));  ASSERT (  (INT16_MIN      <= s16));  ASSERT (! (INT16_MAX      <= s16));  ASSERT (! (INT16_MIN      >  s16));  ASSERT (  (INT16_MAX + 1L >  s16));  ASSERT (! (INT16_MIN - 1L >= s16));  ASSERT (  (INT16_MAX      >= s16));  ASSERT (! (         0 - 1  == u16));  ASSERT (! (UINT16_MAX + 1L == u16));  ASSERT (  (         0 - 1  != u16));  ASSERT (  (UINT16_MAX + 1L != u16));  ASSERT (  (         0 - 1  <  u16));  ASSERT (! (UINT16_MAX      <  u16));  ASSERT (  (         0      <= u16));  ASSERT (! (UINT16_MAX + 1L <= u16));  ASSERT (! (         0      >  u16));  ASSERT (  (UINT16_MAX + 1L >  u16));  ASSERT (! (         0 - 1  >= u16));  ASSERT (  (UINT16_MAX      >= u16));   /* sdcc can't hold a number (INT32_MIN - 1) or (INT32_MAX + 1),      there's no 'double' or 'long long' *//* ASSERT (! (INT32_MIN - 1 == s32)); *//* ASSERT (! (INT32_MAX + 1 == s32)); *//* ASSERT (  (INT32_MIN - 1 != s32)); *//* ASSERT (  (INT32_MAX + 1 != s32)); *//* ASSERT (  (INT32_MIN - 1 <  s32)); */   ASSERT (! (INT32_MAX     <  s32));   ASSERT (  (INT32_MIN     <= s32));   ASSERT (! (INT32_MAX     <= s32));   ASSERT (! (INT32_MIN     >  s32));/* ASSERT (  (INT32_MAX + 1 >  s32)); *//* ASSERT (! (INT32_MIN - 1 >= s32)); */   ASSERT (  (INT32_MAX     >= s32));   ASSERT (! (         0 - 1 == u32));/* ASSERT (! (UINT32_MAX + 1 == u32)); */   ASSERT (  (         0 - 1 != u32));/* ASSERT (  (UINT32_MAX + 1 != u32)); */   ASSERT (  (         0 - 1 <  u32));   ASSERT (! (UINT32_MAX     <  u32));   ASSERT (  (         0     <= u32));/* ASSERT (! (UINT32_MAX + 1 <= u32)); */   ASSERT (! (         0     >  u32));/* ASSERT (  (UINT32_MAX + 1 >  u32)); */   ASSERT (! (         0 - 1 >= u32));   ASSERT (  (UINT32_MAX     >= u32));}voidtestFoo1(void){#if defined(PORT_HOST)   volatile bool sb, ub;#else   volatile   signed bool sb;   volatile unsigned bool ub;#endif  sb = 0;  ub = 0;  ASSERT (! (-1 == sb));  ASSERT (  ( 0 == sb));  ASSERT (! ( 1 == sb));  ASSERT (  (-1 != sb));  ASSERT (! ( 0 != sb));  ASSERT (  ( 1 != sb));  ASSERT (  (-1 <  INT_CAST sb));  ASSERT (! ( 0 <  sb));  ASSERT (  ( 0 <= sb));  ASSERT (! ( 1 <= sb));  ASSERT (! ( 0 >  sb));  ASSERT (  ( 1 >  sb));  ASSERT (! (-1 >= INT_CAST sb));  ASSERT (  ( 0 >= sb));  ASSERT (! (-1 == ub));  ASSERT (  ( 0 == ub));  ASSERT (! ( 1 == ub));  ASSERT (  (-1 != ub));  ASSERT (! ( 0 != ub));  ASSERT (  ( 1 != ub));  ASSERT (  (-1 <  INT_CAST ub));  ASSERT (! ( 0 <  ub));  ASSERT (  ( 0 <= ub));  ASSERT (! ( 1 <= ub));  ASSERT (! ( 0 >  ub));  ASSERT (  ( 1 >  ub));  ASSERT (! (-1 >= INT_CAST ub));  ASSERT (  ( 0 >= ub));}voidtestFoo2(void){  volatile struct {      signed sb1:1;      signed sb3:3;    unsigned ub1:1;    unsigned ub3:3;  } str;  str.sb1 = 0;  str.ub1 = 0;  str.sb3 = 0;  str.ub3 = 0;  ASSERT (! (-2 == str.sb1));  ASSERT (! (-1 == str.sb1));  ASSERT (  ( 0 == str.sb1));  ASSERT (! ( 1 == str.sb1));  ASSERT (! (-1 == str.ub1));  ASSERT (  ( 0 == str.ub1));  ASSERT (! ( 1 == str.ub1));  ASSERT (! ( 2 == str.ub1));  ASSERT (! (-5 == str.sb3));  ASSERT (! (-4 == str.sb3));  ASSERT (  ( 0 == str.sb3));  ASSERT (! ( 3 == str.sb3));  ASSERT (! ( 4 == str.sb3));  ASSERT (! (-1 == str.ub3));  ASSERT (  ( 0 == str.ub3));  ASSERT (! ( 7 == str.ub3));  ASSERT (! ( 8 == str.ub3));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -