像“2*7”这样的操作被认为是文字吗?

Are operations like `2*7` considered literals?

我只是有一个小问题。

操作是否被视为文字?例如,2*7 会是文字吗? "hello, " + "world!" 是文字吗?

我知道操作数是文字,但表达式不是明确的 14"hello, world!"

问题2+3算文字吗? 基本上问我在问什么,但大多数答案甚至没有帮助,他们所做的只是分解变量声明或谈论编译器如何处理它们,但我不是在寻找那个,所以我会喜欢更深入的解释。


谢谢

这取决于语言和编译器,抱歉。但是仅仅使用文字是一种标记的概念,那么不,结果是编译时常量,而不是标记。

在 C/C++ 中,2*7 将被编译器优化为一个新常量,但它实际上并没有被合法地定义为文字,尽管它可以被视为编译时常量.

连接"hello" "world"(注意没有加号)在c++中实际上被描述为一个预处理步骤,所以确实生成了一个新的文字常量字符串,但是在原始的C中这不起作用。

但请注意,在 C 中,宏会将参数短语 2+7 视为单独的标记,而 #define STUPIDMUL3(val) 3 * val 对于 2+7 将给出答案 13,而不是 18。如果您可以找到一种方法来强制宏以不同方式处理字符串的两半,我认为它会。

我希望解释器处理 2*7 比处理 14 花费更长的时间,因为它可能每次都解释并解决它。