我将 a 存储char在一个long变量中并尝试使用printf.
long a = 'A';
printf("%c \n",a);
考虑到默认参数提升,参数被提升到,int但其long排名高于int不应提升(或实际降级)到int.
现在,如果它没有被提升为int,在 printf 语句中不存在类型不匹配,因为我们正在尝试使用 打印long变量%c。根据 C 标准,这种行为应该是未定义的,但编译器完美地打印A为输出,没有任何错误或警告。为什么会这样?
我正在研究 GCC 代码块编译器。