在 C 中使用 " 和 ' 的区别

Difference between using " and ' in C

我尝试了 运行 一个 C 程序,代码为:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char grade;
    float mark;
    printf("Enter total mark percentage : ");
    scanf("%f", &mark);
    if(mark>=90){
        grade="A";
    }else{
        grade="B";
    }
    printf("Your grade is %c", grade);
    return EXIT_SUCCESS;
}

它会产生一个警告“从 'char' 到 'char*' 的赋值从没有转换的指针生成整数”。
我可以通过在第 10 行和第 12

行将 " 更改为 ' 来解决它
        grade='A';
    }else{
        grade='B';
    }

这解决了警告。但我想用 " 来包含 A & B。 我尝试在第 5 行将 mark 初始化为 int 而不是 char 但它也没有用. 我只想知道使用 '" .

有什么区别

"..." 用于字符串 - 即。以 NUL 结尾的字符数组(char[] 或 char*)

'.'用于 单个 字符 - 即。一个字符。

例如: "Hello" 是一个字符串(字符数组),包含以下 6 个单个字符:

'H', 'e', 'l', 'l', 'o', '\0' (最后一个是 NUL 字符).

因此

'A' 只是 'A'(包含 A 的 ASCII 值的单个字符)

"A" 是一个字符 array,包含两个字符 - 'A' 和 '\0'(因此是一个字符串)

" " 用于字符串,' ' 用于字符。因为A和B是 字符,我们将为它们使用单​​引号。

这就是为什么这种格式是正确的。

grade='A';
    }else{
        grade='B';
    } 

符号'用于指定整型字符常量。例如 'A' 是一个整型字符常量,类型为 int.

符号"用于指定字符串文字。例如 "A" 是一个类型为 char[2] 的字符串文字。即字符串字面量是一个字符数组,存储方式如

{ 'A', '[=10=]' }

字符串文字包含以零终止字符 '[=21=]' 结尾的字符序列,这些字符也存储在字符串文字中。

表达式中使用的字符数组指示符被隐式(极少数例外)转换为指向其第一个类型 char *const char *.

的元素的指针

这意味着在这个赋值语句中

grade="A";

具有数组类型 char[2] 的字符串文字 "A" 被转换为指向其第一个元素 'A' 的指针。结果,编译器发出一条消息,表明您正在尝试将指针分配给整数类型的对象。

你可以这样写

grade = "A"[0];

grade = *"A";

但这只会让代码的读者感到困惑,因为这样写起来会更简单明了

grade = 'A';

那就是不需要像"A"那样使用整个数组(记住它在内部代表两个元素的数组{ 'A', '[=28=]' })只使用它的一个元素'A' .