C++ 多字符字符常量警告 if(per>=80) 成绩class='A+'; 否则,如果(per>=75&&per=70&&per=65&&per=60&&per=55&&per=50&&per=45&&per=40&&per

C++ 多字符字符常量警告 if(per>=80) 成绩class='A+'; 否则,如果(per>=75&&per=70&&per=65&&per=60&&per=55&&per=50&&per=45&&per=40&&per,c++,c++11,C++,C++11,是您的引号。一个字符周围的单引号用于char文字,多个字符周围的单引号被解释为整型文字(),而零个或多个字符周围的双引号被解释为const char*(即c字符串) 因此,您的'A+'是int,而不是您想要的char或string。解决方法是使用双引号,假设grade类型为char*或std::string是您的引号。单引号围绕一个字符r用于char文本,多个字符周围的单引号解释为整数类型的文本(),而零个或多个字符周围的双引号解释为const char*(即c字符串) 因此,您的'A+'是in

是您的引号。一个字符周围的单引号用于
char
文字,多个字符周围的单引号被解释为整型文字(),而零个或多个字符周围的双引号被解释为
const char*
(即c字符串)


因此,您的
'A+'
int
,而不是您想要的
char
string
。解决方法是使用双引号,假设
grade
类型为
char*
std::string

是您的引号。单引号围绕一个字符r用于
char
文本,多个字符周围的单引号解释为整数类型的文本(),而零个或多个字符周围的双引号解释为
const char*
(即c字符串)


因此,您的
'A+'
int
,而不是您想要的
char
string
。解决方法是使用双引号,假设
grade
类型为
char*
std::string

撇号(')标记仅用于字符,如单个字母A。如果您想使用+它不再是单个字母,而是字符串。对于字符串,您应该使用引号(“)。因此您需要将成绩变量的类型更改为字符串而不是字符,并将“替换为”。

撇号(“)标记仅用于字符,如单个字母A。如果您想使用+它不再是单个字母,而是字符串。对于字符串,您应该使用引号(“)。所以您需要将成绩变量的类型更改为字符串而不是字符,并将“替换为”.

您好。如果您提供一个完全独立的示例,即编译的内容(或触发您看到的警告/错误),那么回答您的问题会更容易。此外,说明您使用的编译器和选项可能是一个好主意。您好。如果您提供一个完全独立的示例,即编译(或触发您看到的警告/错误)的内容,则回答您的问题会更容易。另外,说出您使用的编译器和选项可能是个好主意。我想您指的是
const char*
文本而不是
int
,对吗?我有点困惑。我本想说“a+”将被解释为intI。我想您指的是
const char*
文本而不是
int
,对吗?我想我有点困惑。我本想说的是,“a+”将被解释为技术上的多字符常量,如
'xy'
是有效的,但它们的解释是实现定义的。非常感谢。它的工作技术上的多字符常量,如
'xy'
是有效的,但它们的解释是实现定义的1.非常感谢,它起作用了
    if(per>=80)
  grade='A+';
    else if(per>=75&&per<=79)
  grade='A';
    else if(per>=70&&per<=74)
  grade='A-';
    else if(per>=65&&per<=69)
  grade='B+';
    else if(per>=60&&per<=64)
  grade='B';
    else if(per>=55&&per<=59)
  grade='B-';
    else if(per>=50&&per<=54)
  grade='C+';
    else if(per>=45&&per<=49)
  grade='C-';
    else if(per>=40&&per<=44)
  grade='D';
    else
            grade='F';