为啥'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'值必须有单引号而不是双引号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我必须使用双引号来连接 2 个表? [复制]

为啥 JSLint 要我使用双引号而不是单引号?预期为 '"' 而看到的是 '''

onclick方法参数中有单引号双引号空格

当字符串在双引号内有单引号时,如何在Javascript中将此字符串转换为JSON对象

C和C++中单引号和双引号的用法?

mysql 进行update时,要更新的字段中有单引号或者双引号导致不能批量生成sql的问题