为啥'char'值必须有单引号而不是双引号? [复制]
Posted
技术标签:
【中文标题】为啥\'char\'值必须有单引号而不是双引号? [复制]【英文标题】:Why do 'char' values have to have single quotation marks instead of double? [duplicate]为什么'char'值必须有单引号而不是双引号? [复制] 【发布时间】:2018-07-01 16:16:27 【问题描述】:目标
最后想知道为什么C++不支持char letter = "C";
却支持char letter = 'C';
(注意引号不一样)。
代码
我使用 Repl.it 作为代码平台。
#include <iostream>
int main()
char letter = "C";
std::cout << letter;
错误信息
main.cpp:在函数'int main()'中:
main.cpp:5:19: 错误:从 'const char*' 到 'char' 的无效转换 [-fpermissive] char 字母 = "C";
【问题讨论】:
因为这是语法。仅此而已…… 你明白为什么C++不允许int i = 1,2,3,4,5;
吗?原理是一样的。
人们总是可以创建自己的编程语言。我想它适用于硕士学位......至少是它的开始。
"C" 是一个字符串。它是零终止的并存储在内存中。分配时,它会给出地址。 'C' 是一个单字节,只是复制到变量中。
因为标准是这样说的:lex.ccon
【参考方案1】:
之所以需要它们,是因为 'C'
和 "C"
代表完全不同的类型 - 第一个是整数值,而第二个是两个字符的数组(字母 'C
' 加上一个隐含的空终止符)。两者都很有用,您需要通过某种方式来说明您想要哪一个,这就是不同类型的引号的作用。
【讨论】:
【参考方案2】:单引号用于单个字符,而双引号用于创建字符串文字。它们的含义不同。
查看more thorough explanation.
【讨论】:
在 c++ 中有诸如 多字节字符文字 之类的东西。很少使用,但可用。以上是关于为啥'char'值必须有单引号而不是双引号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 JSLint 要我使用双引号而不是单引号?预期为 '"' 而看到的是 '''