【问题标题】:What is the difference between ' and " in C? [duplicate]C中的'和“有什么区别? [重复]
【发布时间】:2020-12-07 10:40:56
【问题描述】:

'q' 可以正常退出,但 "q" 不能。

有什么区别?

#include <stdio.h>
#include <unistd.h>


int main(){
  char c;
  while(read(STDIN_FILENO, &c, 1) == 1 && c != "q");
  return 0;
}

【问题讨论】:

  • ' 用于字符," 用于字符串。字符串基本上是一个以 NUL ('\0') 结尾的字符数组。
  • @strupo:c 中没有数据类型string。而'不能带字符,只能带一个char
  • @raiserle 是的,你是对的,这就是我的意思。此外,char *char[] 通常称为字符串。
  • @strupo:char 的数组不是字符串 ;)。 string 数据类型是在 c++ 中定义的,而不是在纯 c 中定义的
  • 嗯.....C书不需要问答论坛

标签: c syntax char string-literals comparison-operators


【解决方案1】:

'q' 是表示单个字符的字符常量。

"q"char[2] 类型的字符数组(字符串字面量),其中包含字符 { 'q', '\0' }

单个字符与类似字符串的比较

c == "q"

c != "q"

没有意义,编译器将发出错误消息,因为实际上将整数(整数提升后的字符)与指针(将字符串文字隐式转换为指向其第一个元素的指针后)进行了比较)

【讨论】:

    【解决方案2】:

    使用 ",您创建一个 char[],使用 ',您创建一个 character。它们相似,但并不完全相同:字符只是 0 到 255 之间的 ASCII 值(就像 @ 987654323@),char[] 是一个 ASCII 值字符串,带有某种终止符,用于告诉代码这是字符串的结尾(在这种情况下是零字符,\0)。 您只能将单个字符放入 '',因为它只有 1 个字符,但您可以在 "" 中放入任意数量的字符,当然,除非您用完 RAM,因为它是一个数组。

    此外,由于您想将其与 char 类型的变量进行比较,因此它不能是字符串,因为这意味着比较不同的类型(据我所知,数组/字符串/char[]/whatever几乎是一个指针,在那个时候比较内存地址和字符变量有点奇怪),但你可以使用myCharArray[0],因为这样你会得到数组的第一项,那就是char演员。

    【讨论】:

    • c 中没有 string 数据类型
    • 或 char[] 或其他。让我改变它。
    【解决方案3】:

    'c' 是一个字符 "c" 是一个包含字符 c 和 '\0'

    的字符串

    【讨论】:

    • c 中没有 string 数据类型
    • 是的,意思是字符数组
    猜你喜欢
    • 1970-01-01
    • 2014-10-12
    • 2014-12-25
    • 2016-05-17
    • 1970-01-01
    • 2011-05-15
    • 2017-02-17
    • 2011-09-27
    • 2013-04-22
    相关资源
    最近更新 更多