Cpp输出多字符常量警告
Cpp
中用单引号(single quotes)
表示单个字符(single character)
,例如'a'
,'$'
,用双引号(double quotes)
表示字符串文本(text)
,例如"Hello World! "
当在一个单引号里面存在多个字符时,Cpp
编译器就会发出警告([-Wmultichar])multi-character
如下所示:
#include <iostream>
using namespace std;
int main()
{
/* multi-character */
cout << 'aa' << endl;
return 0;
}
警告信息为:
[{
"resource": "/e:/CppWorkSpace/VSCLearnCpp/learncpp/1_5.cpp",
"owner": "_generated_diagnostic_collection_name_#0",
"code": "-Wmultichar",
"severity": 4,
"message": "Multi-character character constant",
"source": "clang",
"startLineNumber": 19,
"startColumn": 13,
"endLineNumber": 19,
"endColumn": 17
}]
其中最主要的为 "message": "Multi-character character constant"
运行该程序,便会得到以下的结果
1_5.cpp:19:13: warning: multi-character character constant [-Wmultichar]
19 | cout << 'aa' << endl;
| ^~~~
24929
编译器发出警告信息,同时输出24929
原来'a'
字符的ASCII码
为0x61
,当多个字符放在同一个单引号中,就会自动将其转换为ASCII码
'aa'
将被转换为0x6161
转化为十进制数就是24949
,同时这个十进制的范围最大为long int
;
例如'aaa
将被转换为0x616161
转换为十进制数即为6381921
.
在实际编程中,我们要避免这种问题的发生