小编Mic*_*chi的帖子

C预处理程序在多大程度上考虑整数文字后缀?

今天,我偶然发现了这样的情况:

#define FOO 2u

#if (FOO == 2)
  unsigned int foo = FOO;
#endif
Run Code Online (Sandbox Code Playgroud)

不管代码为何如此(不要质疑why),我都想知道预处理器可以在多大程度上处理整数文字后缀。实际上,我感到惊讶的是它完全有效。在使用此代码对GCC和C99进行了一些实验之后,...

#include <stdio.h>

int main()
{
  #if (1u == 1)
    printf("1u == 1\n");
  #endif

  #if (1u + 1l == 2ll)
    printf("1u + 1l == 2ll\n");
  #endif

  #if (1ull - 2u == -1)
    printf("1ull - 2u == -1\n");
  #endif

  #if (1u - 2u == 0xFFFFFFFFFFFFFFFF)
    printf("1u - 2u == 0xFFFFFFFFFFFFFFFF\n");
  #endif

  #if (-1 == 0xFFFFFFFFFFFFFFFF)
    printf("-1 == 0xFFFFFFFFFFFFFFFF\n");
  #endif

  #if (-1l == 0xFFFFFFFFFFFFFFFF) …
Run Code Online (Sandbox Code Playgroud)

c c++ integer c-preprocessor suffix

11
推荐指数
3
解决办法
231
查看次数

标签 统计

c ×1

c++ ×1

c-preprocessor ×1

integer ×1

suffix ×1