|
|
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语法的现代高级语言已经放弃了这种表示法,大概是因为它容易出错。但是这些语言有一个字符串连接的操作符,例如
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |