MST

星途 面试题库

面试题:C语言#运算符使用的常见误区

在C语言中,#运算符用于将宏参数转换为字符串常量。请指出以下代码片段使用#运算符时可能存在的常见误区,并说明如何修正。 #define PRINT(x) printf(#x " = %d\n", x) int main() { int num = 10; PRINT(num); return 0; }
27.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

常见误区

  1. 字符串连接:代码中 #x " = %d\n" 这种写法在某些编译器下可能会有问题。虽然C标准允许相邻字符串字面量自动连接,但这种写法不够直观和通用,在一些编译器环境中可能无法正确解析。

修正方法

  1. 使用标准字符串连接方式:将 #x " = %d\n" 改为 #x " = %d\n" 的标准连接方式,即使用 , 连接两个字符串。修改后的代码如下:
#define PRINT(x) printf(#x " = %d\n", x)
int main() {
    int num = 10;
    PRINT(num);
    return 0;
}

修改为:

#define PRINT(x) printf("%s = %d\n", #x, x)
int main() {
    int num = 10;
    PRINT(num);
    return 0;
}

这样修改后,通过 printf 的格式化字符串和参数列表,清晰地实现了将宏参数转换为字符串并输出其值的功能,且更具可移植性。