operator-unary.c

来自「用于进行gcc测试」· C语言 代码 · 共 55 行

C
55
字号
/* { dg-options "-std=gnu99" } *//* C99 6.5.3 Unary operators.  */extern void abort (void);#define AUTO_INCREASE_DECREASE(TYPE,SUFFIX)   		\do                                            		\{                                             		\  _Decimal##TYPE in_de_d##TYPE = 0.0##SUFFIX;         	\  if (in_de_d##TYPE++) abort ();              		\  if (--in_de_d##TYPE) abort ();              		\  if (++in_de_d##TYPE == 0.0##SUFFIX) abort (); 	\  if (in_de_d##TYPE-- == 0.0##SUFFIX) abort (); 	\} while(0)#define UNARY_OPERATOR(TYPE,SUFFIX)           		\do                                            		\{                                             		\ _Decimal##TYPE unary_d##TYPE = 1.0##SUFFIX;  		\ _Decimal##TYPE* unary_dp##TYPE;              		\ /*  & operator.  */                          		\ unary_dp##TYPE = &(unary_d##TYPE);           		\ /*  * operator.  */                          		\ unary_d##TYPE = *(unary_dp##TYPE);           		\ /*  - operator.  */                          		\ unary_d##TYPE = -unary_d##TYPE;              		\ if (unary_d##TYPE != -1.0##SUFFIX) abort ();         	\ /*  + operator.  */                          		\ unary_d##TYPE = +unary_d##TYPE;              		\ if (unary_d##TYPE != -1.0##SUFFIX) abort ();         	\ if (!unary_d##TYPE) abort (); /*! operator.  */ 	\} while (0)intmain (){  /*  C99 6.5.3.1 Prefix increment and decrement operators. */  AUTO_INCREASE_DECREASE(32, DF);  AUTO_INCREASE_DECREASE(64, DD);  AUTO_INCREASE_DECREASE(128, DL);  /*  C99 6.5.3 Unary operators.  */  UNARY_OPERATOR(32, DF);  UNARY_OPERATOR(64, DD);  UNARY_OPERATOR(128, DL);  /*  C99 6.5.3 Unary operators for zero values.  */  if (- +0.df != -0.df) abort ();  if (+ -0.df != -0.df) abort ();  if (- -0.df != +0.df) abort ();  return 0;}

⌨️ 快捷键说明

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