我得到以下错误:[警告]多字符字符常量
I get the following error: [Warning] multi-character character constant
嘿,我刚开始编程,所以我不知道如何修复它。这是我的代码:
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,在第二个片段中,所有字符文字都是单字符常量,因此,它是正确的,不会产生任何警告。
相关文章:
- 警告处理为错误这里有什么问题
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 为什么在 c++ 中索引字符串会发出隐式转换警告?
- 多字符常量警告
- 警告:缺少终止"字符
- q致命参数:将 QString 转换为常量字符* 会导致警告"format string is not a string literal"
- C4838 警告,包含常量字符* 数组的数组初始化
- 避免或警告在 GCC 中从常量字符* 隐式转换为布尔值
- 声明多字符字符的警告和错误
- C/C++ 中的套接字编程 - gcc 字符 * 警告
- -在无符号字符上使用运算符 <<= 时的转换警告
- 我得到以下错误:[警告]多字符字符常量
- C++错误:警告:多字符字符常量/a用于用法
- 严格的混叠警告,创建对无符号字符数组 + 偏移量的uint32_t引用
- 警告多字符字符常量 [-Wmultichar]
- 使用 C 字符串会发出警告:"Address of stack memory associated with local variable returned"
- 在无符号字符数组和有符号字符数组上使用strlen时发出警告
- 如何为多字符文字设置编译器错误或至少警告