今天,我偶然发现了这样的情况:
#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)