我得到以下错误:[警告]多字符字符常量

I get the following error: [Warning] multi-character character constant

本文关键字:警告 字符 字符常量 错误      更新时间:2023-10-16

嘿,我刚开始编程,所以我不知道如何修复它。这是我的代码:

if(f_1 == 'x' && f_2 == 'x' && stupid < '80' ) 
       {
              f_3 == 'o';
              player_turn = '1';
              }
       else if(f_2 == 'x' && f_3 == 'x' && stupid < '80')
              {
              f_1 == 'o';
              player_turn = '1';
              }
  ...

但我不知道他为什么不在这里给出错误:

 if (eingabe == '1' && f_1 == '1' && player_turn == '1' )
    {
        f_1= 'x';
        player_turn = '2';
        cout << "Spieler Zwei ist am Zug" <<endl;
    }
    else if (eingabe == '2' && f_2 == '2' && player_turn == '1') {
        f_2= 'x';
        cout << "Spieler Zwei ist am Zug" <<endl;
            player_turn = '2';
        } 

这里不是同样的问题吗。我在谷歌上搜索了一下,但我不明白我在"answers""中的错误在哪里

'80'是一个有效的多字符常量,但很可能不是您想要的。因此编译器会对此发出警告。

"但我不知道他为什么不在这里给出错误:"

我无法从你的背景中判断出你实际上想要实现什么,但

if (eingabe == '1' && f_1 == '1' && player_turn == '1' )

第二个样本中的字符常量都很好。

单引号''用于字符文字(即一个字符),双引号""用于字符串文字(字符数组,以NUL/zero结尾)。有问题的多字符文字是'80'——单引号内有两个字符。

您的问题出现在以下代码中

stupid < '80'

假设stupid的类型为char,则该值应为单字符。'80'不是一个有效的单字符文字,它是一个多字符文字,这可能是您不想要的。

OTOH,在第二个片段中,所有字符文字都是单字符常量,因此,它是正确的,不会产生任何警告。