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

📄 convert.c

📁 用于进行gcc测试
💻 C
📖 第 1 页 / 共 2 页
字号:
/* { dg-do run } *//* { dg-options "-std=gnu99 -O0" } *//* C99 6.3 Conversions.   Check conversions involving fixed-point.  */extern void abort (void);/* Fixed-point to fixed-point.  */#define CONV(TYPE1,POSTFIX1,TYPE2,POSTFIX2) \  { \    TYPE1 a = 0.5 ## POSTFIX1; \    TYPE2 b = a; \    if (b != 0.5 ## POSTFIX2) \      abort(); \  }/* TYPE1 with VALUE1 to TYPE2 with VALUE2.  */#define CONV2(TYPE1,VALUE1,TYPE2,VALUE2) \  { \    TYPE1 a = VALUE1; \    TYPE2 b = a; \    if (b != VALUE2) \      abort(); \  }/* Fixed-point to integer, and integer to fixed-point.  */#define CONV_INT(TYPE1,POSTFIX1,TYPE2) \  { \    TYPE1 a = 0.5 ## POSTFIX1; \    TYPE2 b = a; \    TYPE2 c = 0; \    TYPE1 d = c; \    if (b != 0) \      abort(); \    if (d != 0.0 ## POSTFIX1) \      abort(); \  }/* Signed fixed-point to integer.  */#define CONV_INT2(TYPE1,POSTFIX1,TYPE2) \  { \    TYPE1 a = -0.5 ## POSTFIX1; \    TYPE2 b = a; \    if (b != 0) \      abort(); \    a = -0.0 ## POSTFIX1; \    b = a; \    if (b != 0) \      abort(); \    a = +0.0 ## POSTFIX1; \    b = a; \    if (b != 0) \      abort(); \    a = +0.1 ## POSTFIX1; \    b = a; \    if (b != 0) \      abort(); \    a = -0.1 ## POSTFIX1; \    b = a; \    if (b != 0) \      abort(); \  }/* Signed fixed-point to signed integer.  */#define CONV_INT3(TYPE1,POSTFIX1,TYPE2) \  { \    TYPE1 a = -0.5 ## POSTFIX1 - 0.5 ## POSTFIX1; \    TYPE2 b = a; \    if (b != -1) \      abort(); \  }/* Fixed-point to floating-point, and floating-point to fixed-point.  */#define CONV_FLOAT(TYPE1,POSTFIX1,TYPE2) \  { \    TYPE1 a = 0.5 ## POSTFIX1; \    TYPE2 b = a; \    TYPE2 c = 0.25; \    TYPE1 d = c; \    if (b != 0.5) \      abort(); \    if (d != 0.25 ## POSTFIX1) \      abort(); \  }/* Accum to integer, and integer to accum.  */#define CONV_ACCUM_INT(TYPE1,POSTFIX1,TYPE2) \  { \    TYPE1 a = 99.12345 ## POSTFIX1; \    TYPE2 b = a; \    TYPE2 c = 123; \    TYPE1 d = c; \    if (b != 99) \      abort(); \    if (d != 123.0 ## POSTFIX1) \      abort(); \  }#define ALL_CONV(TYPE,POSTFIX) \  CONV(TYPE, POSTFIX, short _Fract, hr) \  CONV(TYPE, POSTFIX, _Fract, r) \  CONV(TYPE, POSTFIX, long _Fract, lr) \  CONV(TYPE, POSTFIX, long long _Fract, llr) \  CONV(TYPE, POSTFIX, unsigned short _Fract, uhr) \  CONV(TYPE, POSTFIX, unsigned _Fract, ur) \  CONV(TYPE, POSTFIX, unsigned long _Fract, ulr) \  CONV(TYPE, POSTFIX, unsigned long long _Fract, ullr) \  CONV(TYPE, POSTFIX, short _Accum, hk) \  CONV(TYPE, POSTFIX, _Accum, k) \  CONV(TYPE, POSTFIX, long _Accum, lk) \  CONV(TYPE, POSTFIX, long long _Accum, llk) \  CONV(TYPE, POSTFIX, unsigned short _Accum, uhk) \  CONV(TYPE, POSTFIX, unsigned _Accum, uk) \  CONV(TYPE, POSTFIX, unsigned long _Accum, ulk) \  CONV(TYPE, POSTFIX, unsigned long long _Accum, ullk) \  CONV(_Sat TYPE, POSTFIX, short _Fract, hr) \  CONV(_Sat TYPE, POSTFIX, _Fract, r) \  CONV(_Sat TYPE, POSTFIX, long _Fract, lr) \  CONV(_Sat TYPE, POSTFIX, long long _Fract, llr) \  CONV(_Sat TYPE, POSTFIX, unsigned short _Fract, uhr) \  CONV(_Sat TYPE, POSTFIX, unsigned _Fract, ur) \  CONV(_Sat TYPE, POSTFIX, unsigned long _Fract, ulr) \  CONV(_Sat TYPE, POSTFIX, unsigned long long _Fract, ullr) \  CONV(_Sat TYPE, POSTFIX, short _Accum, hk) \  CONV(_Sat TYPE, POSTFIX, _Accum, k) \  CONV(_Sat TYPE, POSTFIX, long _Accum, lk) \  CONV(_Sat TYPE, POSTFIX, long long _Accum, llk) \  CONV(_Sat TYPE, POSTFIX, unsigned short _Accum, uhk) \  CONV(_Sat TYPE, POSTFIX, unsigned _Accum, uk) \  CONV(_Sat TYPE, POSTFIX, unsigned long _Accum, ulk) \  CONV(_Sat TYPE, POSTFIX, unsigned long long _Accum, ullk) \  CONV(TYPE, POSTFIX, _Sat short _Fract, hr) \  CONV(TYPE, POSTFIX, _Sat _Fract, r) \  CONV(TYPE, POSTFIX, _Sat long _Fract, lr) \  CONV(TYPE, POSTFIX, _Sat long long _Fract, llr) \  CONV(TYPE, POSTFIX, _Sat unsigned short _Fract, uhr) \  CONV(TYPE, POSTFIX, _Sat unsigned _Fract, ur) \  CONV(TYPE, POSTFIX, _Sat unsigned long _Fract, ulr) \  CONV(TYPE, POSTFIX, _Sat unsigned long long _Fract, ullr) \  CONV(TYPE, POSTFIX, _Sat short _Accum, hk) \  CONV(TYPE, POSTFIX, _Sat _Accum, k) \  CONV(TYPE, POSTFIX, _Sat long _Accum, lk) \  CONV(TYPE, POSTFIX, _Sat long long _Accum, llk) \  CONV(TYPE, POSTFIX, _Sat unsigned short _Accum, uhk) \  CONV(TYPE, POSTFIX, _Sat unsigned _Accum, uk) \  CONV(TYPE, POSTFIX, _Sat unsigned long _Accum, ulk) \  CONV(TYPE, POSTFIX, _Sat unsigned long long _Accum, ullk) \  CONV_INT(TYPE, POSTFIX, signed char) \  CONV_INT(TYPE, POSTFIX, short) \  CONV_INT(TYPE, POSTFIX, int) \  CONV_INT(TYPE, POSTFIX, long) \  CONV_INT(TYPE, POSTFIX, long long) \  CONV_INT(TYPE, POSTFIX, unsigned char) \  CONV_INT(TYPE, POSTFIX, unsigned short) \  CONV_INT(TYPE, POSTFIX, unsigned int) \  CONV_INT(TYPE, POSTFIX, unsigned long) \  CONV_INT(TYPE, POSTFIX, unsigned long long) \  CONV_INT(_Sat TYPE, POSTFIX, signed char) \  CONV_INT(_Sat TYPE, POSTFIX, short) \  CONV_INT(_Sat TYPE, POSTFIX, int) \  CONV_INT(_Sat TYPE, POSTFIX, long) \  CONV_INT(_Sat TYPE, POSTFIX, long long) \  CONV_INT(_Sat TYPE, POSTFIX, unsigned char) \  CONV_INT(_Sat TYPE, POSTFIX, unsigned short) \  CONV_INT(_Sat TYPE, POSTFIX, unsigned int) \  CONV_INT(_Sat TYPE, POSTFIX, unsigned long) \  CONV_INT(_Sat TYPE, POSTFIX, unsigned long long) \  CONV_FLOAT(TYPE, POSTFIX, float) \  CONV_FLOAT(TYPE, POSTFIX, double) \  CONV_FLOAT(_Sat TYPE, POSTFIX, float) \  CONV_FLOAT(_Sat TYPE, POSTFIX, double)#define ALL_ACCUM_CONV(TYPE,POSTFIX) \  CONV_ACCUM_INT(TYPE, POSTFIX, signed char) \  CONV_ACCUM_INT(TYPE, POSTFIX, short) \  CONV_ACCUM_INT(TYPE, POSTFIX, int) \  CONV_ACCUM_INT(TYPE, POSTFIX, long) \  CONV_ACCUM_INT(TYPE, POSTFIX, long long) \  CONV_ACCUM_INT(TYPE, POSTFIX, unsigned char) \  CONV_ACCUM_INT(TYPE, POSTFIX, unsigned short) \  CONV_ACCUM_INT(TYPE, POSTFIX, unsigned int) \  CONV_ACCUM_INT(TYPE, POSTFIX, unsigned long) \  CONV_ACCUM_INT(TYPE, POSTFIX, unsigned long long) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, signed char) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, short) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, int) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, long) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, long long) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned char) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned short) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned int) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned long) \  CONV_ACCUM_INT(_Sat TYPE, POSTFIX, unsigned long long)#define NEG_CONV(TYPE,POSTFIX) \  CONV_INT2(TYPE, POSTFIX, signed char) \  CONV_INT2(TYPE, POSTFIX, short) \  CONV_INT2(TYPE, POSTFIX, int) \  CONV_INT2(TYPE, POSTFIX, long) \  CONV_INT2(TYPE, POSTFIX, long long) \  CONV_INT2(TYPE, POSTFIX, unsigned char) \  CONV_INT2(TYPE, POSTFIX, unsigned short) \  CONV_INT2(TYPE, POSTFIX, unsigned int) \  CONV_INT2(TYPE, POSTFIX, unsigned long) \  CONV_INT2(TYPE, POSTFIX, unsigned long long) \  CONV_INT3(TYPE, POSTFIX, signed char) \  CONV_INT3(TYPE, POSTFIX, short) \  CONV_INT3(TYPE, POSTFIX, int) \  CONV_INT3(TYPE, POSTFIX, long) \  CONV_INT3(TYPE, POSTFIX, long long)/* Signed accum to _Sat unsigned/signed fract.  */#define SAT_CONV1(TYPE, POSTFIX) \  CONV2(TYPE, 3.2 ## POSTFIX, _Sat short _Fract, 1.0hr) \  CONV2(TYPE, -3.2 ## POSTFIX, _Sat short _Fract, -0.5hr - 0.5hr) \

⌨️ 快捷键说明

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