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

📄 20020506-1.c

📁 linux下的gcc编译器
💻 C
字号:
/* Copyright (C) 2002  Free Software Foundation.   Test that (A & C1) op C2 optimizations behave correctly where C1 is   a constant power of 2, op is == or !=, and C2 is C1 or zero.   Written by Roger Sayle, 5th May 2002.  */#include <limits.h>extern void abort (void);void test1 (signed char c, int set);void test2 (unsigned char c, int set);void test3 (short s, int set);void test4 (unsigned short s, int set);void test5 (int i, int set);void test6 (unsigned int i, int set);void test7 (long long l, int set);void test8 (unsigned long long l, int set);#ifndef LONG_LONG_MAX#define LONG_LONG_MAX __LONG_LONG_MAX__#endif#ifndef LONG_LONG_MIN#define LONG_LONG_MIN (-LONG_LONG_MAX-1)#endif#ifndef ULONG_LONG_MAX#define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1)#endifvoidtest1 (signed char c, int set){  if ((c & (SCHAR_MAX+1)) == 0)    {      if (set) abort ();    }  else    if (!set) abort ();  if ((c & (SCHAR_MAX+1)) != 0)    {      if (!set) abort ();    }  else    if (set) abort ();  if ((c & (SCHAR_MAX+1)) == (SCHAR_MAX+1))    {      if (!set) abort ();    }  else    if (set) abort ();  if ((c & (SCHAR_MAX+1)) != (SCHAR_MAX+1))    {      if (set) abort ();    }  else    if (!set) abort ();}voidtest2 (unsigned char c, int set){  if ((c & (SCHAR_MAX+1)) == 0)    {      if (set) abort ();    }  else    if (!set) abort ();  if ((c & (SCHAR_MAX+1)) != 0)    {      if (!set) abort ();    }  else    if (set) abort ();  if ((c & (SCHAR_MAX+1)) == (SCHAR_MAX+1))    {      if (!set) abort ();    }  else    if (set) abort ();  if ((c & (SCHAR_MAX+1)) != (SCHAR_MAX+1))    {      if (set) abort ();    }  else    if (!set) abort ();}voidtest3 (short s, int set){  if ((s & (SHRT_MAX+1)) == 0)    {      if (set) abort ();    }  else    if (!set) abort ();  if ((s & (SHRT_MAX+1)) != 0)    {      if (!set) abort ();    }  else    if (set) abort ();  if ((s & (SHRT_MAX+1)) == (SHRT_MAX+1))    {      if (!set) abort ();    }  else    if (set) abort ();  if ((s & (SHRT_MAX+1)) != (SHRT_MAX+1))    {      if (set) abort ();    }  else    if (!set) abort ();}voidtest4 (unsigned short s, int set){  if ((s & (SHRT_MAX+1)) == 0)    {      if (set) abort ();    }  else    if (!set) abort ();  if ((s & (SHRT_MAX+1)) != 0)    {      if (!set) abort ();    }  else    if (set) abort ();  if ((s & (SHRT_MAX+1)) == (SHRT_MAX+1))    {      if (!set) abort ();    }  else    if (set) abort ();  if ((s & (SHRT_MAX+1)) != (SHRT_MAX+1))    {      if (set) abort ();    }  else    if (!set) abort ();}voidtest5 (int i, int set){  if ((i & (INT_MAX+1U)) == 0)    {      if (set) abort ();    }  else    if (!set) abort ();  if ((i & (INT_MAX+1U)) != 0)    {      if (!set) abort ();    }  else    if (set) abort ();  if ((i & (INT_MAX+1U)) == (INT_MAX+1U))    {      if (!set) abort ();    }  else    if (set) abort ();  if ((i & (INT_MAX+1U)) != (INT_MAX+1U))    {      if (set) abort ();    }  else    if (!set) abort ();}voidtest6 (unsigned int i, int set){  if ((i & (INT_MAX+1U)) == 0)    {      if (set) abort ();    }  else    if (!set) abort ();  if ((i & (INT_MAX+1U)) != 0)    {      if (!set) abort ();    }  else    if (set) abort ();  if ((i & (INT_MAX+1U)) == (INT_MAX+1U))    {      if (!set) abort ();    }  else    if (set) abort ();  if ((i & (INT_MAX+1U)) != (INT_MAX+1U))    {      if (set) abort ();    }  else    if (!set) abort ();}voidtest7 (long long l, int set){  if ((l & (LONG_LONG_MAX+1ULL)) == 0)    {      if (set) abort ();    }  else    if (!set) abort ();  if ((l & (LONG_LONG_MAX+1ULL)) != 0)    {      if (!set) abort ();    }  else    if (set) abort ();  if ((l & (LONG_LONG_MAX+1ULL)) == (LONG_LONG_MAX+1ULL))    {      if (!set) abort ();    }  else    if (set) abort ();  if ((l & (LONG_LONG_MAX+1ULL)) != (LONG_LONG_MAX+1ULL))    {      if (set) abort ();    }  else    if (!set) abort ();}voidtest8 (unsigned long long l, int set){  if ((l & (LONG_LONG_MAX+1ULL)) == 0)    {      if (set) abort ();    }  else    if (!set) abort ();  if ((l & (LONG_LONG_MAX+1ULL)) != 0)    {      if (!set) abort ();    }  else    if (set) abort ();  if ((l & (LONG_LONG_MAX+1ULL)) == (LONG_LONG_MAX+1ULL))    {      if (!set) abort ();    }  else    if (set) abort ();  if ((l & (LONG_LONG_MAX+1ULL)) != (LONG_LONG_MAX+1ULL))    {      if (set) abort ();    }  else    if (!set) abort ();}intmain (){  test1 (0, 0);  test1 (SCHAR_MAX, 0);  test1 (SCHAR_MIN, 1);  test1 (UCHAR_MAX, 1);  test2 (0, 0);  test2 (SCHAR_MAX, 0);  test2 (SCHAR_MIN, 1);  test2 (UCHAR_MAX, 1);  test3 (0, 0);  test3 (SHRT_MAX, 0);  test3 (SHRT_MIN, 1);  test3 (USHRT_MAX, 1);  test4 (0, 0);  test4 (SHRT_MAX, 0);  test4 (SHRT_MIN, 1);  test4 (USHRT_MAX, 1);  test5 (0, 0);  test5 (INT_MAX, 0);  test5 (INT_MIN, 1);  test5 (UINT_MAX, 1);  test6 (0, 0);  test6 (INT_MAX, 0);  test6 (INT_MIN, 1);  test6 (UINT_MAX, 1);  test7 (0, 0);  test7 (LONG_LONG_MAX, 0);  test7 (LONG_LONG_MIN, 1);  test7 (ULONG_LONG_MAX, 1);  test8 (0, 0);  test8 (LONG_LONG_MAX, 0);  test8 (LONG_LONG_MIN, 1);  test8 (ULONG_LONG_MAX, 1);  return 0;}

⌨️ 快捷键说明

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