是否有像`2 * 7`这样的操作被视为文字?

问题描述 投票:0回答:1

我只是有一个小问题。

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

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

Is 2+3 considered as a literal? 问题基本上是在问我在问什么,但大多数答案甚至都没有帮助,他们所做的只是分解变量声明或谈论编译器如何处理它们,但是我不是在寻找它,所以我想要更深入的解释。


谢谢

literals
1个回答
0
投票

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

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

连接"hello" "world"(注意,没有加号)实际上在c ++中被描述为预处理步骤,因此会生成一个新的文字常量字符串,但是在原始C语言中这是行不通的。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.