20040311-1.c

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

C
69
字号
/* Copyright (C) 2004 Free Software Foundation.   Check that constant folding and RTL simplification of -(x >> y) doesn't   break anything and produces the expected results.   Written by Roger Sayle, 11th March 2004.  */extern void abort (void);#define INT_BITS  (sizeof(int)*8)int test1(int x){  return -(x >> (INT_BITS-1));}int test2(unsigned int x){  return -((int)(x >> (INT_BITS-1)));}int test3(int x){  int y;  y = INT_BITS-1;  return -(x >> y);}int test4(unsigned int x){  int y;  y = INT_BITS-1;  return -((int)(x >> y));}int main(){  if (test1(0) != 0)    abort ();  if (test1(1) != 0)    abort ();  if (test1(-1) != 1)    abort ();  if (test2(0) != 0)    abort ();  if (test2(1) != 0)    abort ();  if (test2((unsigned int)-1) != -1)    abort ();  if (test3(0) != 0)    abort ();  if (test3(1) != 0)    abort ();  if (test3(-1) != 1)    abort ();  if (test4(0) != 0)    abort ();  if (test4(1) != 0)    abort ();  if (test4((unsigned int)-1) != -1)    abort ();  return 0;}

⌨️ 快捷键说明

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