gpt4 book ai didi

c++ - C/C++中int的字符串化

转载 作者:太空狗 更新时间:2023-10-29 23:26:19 25 4
gpt4 key购买 nike

根据我对字符串化的了解,下面的代码应该输出 100。 vstr(s) 应该用 100 的值扩展然后 str(s) 得到 100 并且它应该返回字符串“100”。但是,它输出“a”。是什么原因?但是,如果我用宏定义的常量 foo 调用,那么它会输出“100”。为什么?

#include<stdio.h>
#define vstr(s) str(s)
#define str(s) #s
#define foo 100
int main()
{
int a = 100;
puts(vstr(a));
puts(vstr(foo));
return 0;
}

最佳答案

原因是预处理器对传递给它们的 token 进行操作,而不是对与这些 token 关联的值进行操作。

#include <stdio.h>

#define vstr(s) str(s)
#define str(s) #s

int main()
{
puts(vstr(10+10));
return 0;
}

输出: 10+10

关于c++ - C/C++中int的字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33729449/

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