gpt4 book ai didi

c - 如何在 c 中的#define 指令中传递值?

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:20 24 4
gpt4 key购买 nike

我想在#define 指令中传递值。我是 c 编程的新手。例如我们在 printf 函数中使用 %s 或 %d printf("hello %d",into);我如何在#define 指令中使用相同的代码。我的代码是#define URL "www.my website.com"我正在尝试使用以下代码传递值#define URL "my website.com%d", int 但我得到没有结果

最佳答案

您可以使用宏参数:

#include <stdio.h>
#define URL(i) "www.mywebsite.com"#i

int main() {
printf(URL(5)); // Will print www.mywebsite.com5
return 0;
}

# 称为粘贴运算符。它将两个标记粘贴在一起。

或者你可以这样做......

#include <stdio.h>
#define URL(i) "www.mywebsite.com %d", i

int main() {
printf(URL(5));
return 0;
}

区别:

  • 在第一个解决方案中,预处理器只是将 i 的任何值粘贴到“www.mywebsite.com”。它不一定是数据。它可以是任何东西。如果你传入 URL(ABC)(注意:ABC 不是字符串。它没有引号。它只是一个简单的标记。),你的输出将是 www.mywebsite.comABC.
    如果您传入 URL("ABC")(带引号的“ABC”),您的输出将是 www.mywebsite.com"ABC"
    所以简而言之,无论你传递什么,预处理器都不关心数据类型。它将它视为一个简单的标记并将其粘贴到 www.mywebsite.com。此处您的 "ABC" 未被预处理器视为字符串,而是被视为任何其他标记。

  • 在第二种解决方案中,预处理器不进行任何粘贴。它只是将您的 printf 语句评估为 printf("www.mywebsite.com%d", i)。因此,您需要传入一个整数作为 URL(5) 或除 5 之外的任何其他整数。如果您传递任何其他数据类型的数据,它会给您一个警告。您不能传递 URL(ABC)。它会报错。因为 ABC 不是数据。但是,如果您将 "ABC" 作为字符串(即带引号)传递,它会发出警告,但您的代码将编译并且结果输出将是 www.mywebsite.com96882598

关于c - 如何在 c 中的#define 指令中传递值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41654013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com