|
|
1
4
我看到几个
C
和
C++
答案,但没有真正的答案
为什么?
或者说,这个特性的基本原理是什么?在
C++
这是功能来自
C99
我们可以通过
Rationale for International StandardâProgramming LanguagesâC
部分
蟒蛇
这似乎有同样的原因,这减少了对丑陋的需要
|
|
|
2
22
当然,这是让代码看起来很好的简单方法:
不过,最好的原因是使用奇怪的printf格式,比如强制输入:
有很多这样的定义,如果您有类型大小的需求,它们可以派上用场。全部检查一下 at this link . 举几个例子:
|
|
|
3
17
这是一个很好的特性,允许您将预处理器字符串与字符串组合在一起。
|
|
|
4
5
可能有用的情况:
为前者提供一个更具体的例子:
|
|
|
5
3
从python词汇分析参考,第2.4.2节:
|
|
|
6
2
我不确定其他编程语言,但例如C不允许您这样做(我认为这是一件好事)。就我所知,如果您可以使用一些特殊的操作符来进行字符串串接,那么大多数显示C++中有用的例子仍然有效。
这可能不太舒服,但肯定更安全。在您的激励示例中,除非您添加
|
|
|
7
1
以便可以跨行拆分长字符串文本。 是的,我在生产代码中看到过。 |
|
|
8
1
为了理据,扩展和简化Shafik Yaghmour的答案:字符串文字串接起源于C(因此由C++继承),和这个词一样,有两个原因(引用来自 Rationale for the ANSI C Programming Language ):
它包含在现代语言python和d中,因为它们从c中复制了它,尽管在这两种语言中,它都被建议用于贬低,因为它很容易出错(如您所注意的),而且是不必要的(因为可以只使用一个连接操作符和 constant folding 对于编译时评估,您可以在C语言中这样做,因为字符串是指针,所以您可以添加它们。 删除并不简单,因为这会破坏兼容性,您必须小心优先级(在词法分析期间,在运算符之前会发生隐式连接,但用运算符替换它意味着您需要小心优先级),因此它仍然存在。 是的,它在用过的生产代码中。 Google Python Style Guide : Line length 指定:
参见 String literal concatenation _在维基百科了解更多细节和参考资料。 |
|
|
9
0
我在C和C++中都有。顺便说一下,我看不出它的实用性和语言的“现代性”有多大关系。 |
|
|
10
0
虽然人们已经从我的嘴里说出了这个功能的实际用途,但迄今为止还没有人试图为语法的选择辩护。 据我所知,这样可能漏掉的打字错误可能只是被忽视了。毕竟,丹尼斯的头脑中似乎没有对打字错误的稳健性,如下面所示:
此外,还有一种可能的观点认为,不值得使用额外的符号来连接字符串文本——毕竟,对于其中的两个字符,没有其他方法可以完成,而且如果有一个符号,可能会产生尝试将其用于运行时字符串连接的诱惑,这高于C的内置功能级别。
一些基于C语法的现代高级语言已经放弃了这种表示法,大概是因为它容易出错。但是这些语言有一个字符串连接的操作符,例如
|
|
|
Divyat · D语言的BNF语法形式[闭口] 8 年前 |
|
|
hiropon · 有没有办法用Dlang同时分配多个变量? 8 年前 |
|
Jonathan Wilbur · 从D中的抽象类运行单元测试? 8 年前 |
|
thinwybk · 如何使用D访问linux字符设备? 8 年前 |
|
|
user3069488 · 震波。D-未定义标识符(Dlang) 8 年前 |
|
|
Dmitry Bubnenkov · 错误:实例化模板实例时出错 8 年前 |
|
|
Matt Smith · 正在转义对局部变量的引用 10 年前 |
|
|
StillLearningToCode · 将字符串解析为D中的标记 11 年前 |
|
|
Suliman · D?的TUI(文本用户界面)? 11 年前 |