多字符字符常量 [-Wmultichar],从 'int' 到 'char' 的转换溢出,ISO C++禁止将字符串常量转换为 'char*'



这是我的字符串.cpp

#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
char name_str = 'anaa';
char *name = "John";
return 0;
}

它在我的终端上显示了一些警告,这些警告是:-

string.cpp:6:21: warning: multi-character character constant [-Wmultichar]
char name_str = 'anaa';
^~~~~~ 
string.cpp: In function 'int main(int, const char**)':
string.cpp:6:21: warning: overflow in conversion from 'int' to 'char' changes value from 
'1634623841' to ''a'' [-Woverflow]
string.cpp:7:18: warning: ISO C++ forbids converting a string constant to 'char*' [- 
Wwrite-strings]
char *name = "John";
^~~~~~

请任何人帮助我理解这些警告!!!我看到有人已经就堆栈溢出问题提出了同样类型的问题,但没有任何详细解释为什么会发生这种情况?

  • 'anaa'不是字符,因此不能将其分配给char类型。它也不是字符串("anaa"是一个(
  • "John"是一个字符串常量,因此必须将name声明为const char *name = "John"

最新更新