1、问题描述
在定义字符型变量给变量赋初值时,如果单引号内写入2~4个字符时,会出现警告;如果单引号内写入4个以上字符时,会出现错误。
1. 当1 < char_nums < 4时
int main() {
char ch1 = 'abcd'; //警告,2、单引号内有2-4个字符时,编辑器将其看为int型(4字节)
system("pause");
return 0;
}
输出结果:d
warning C4305: “初始化”: 从“int”到“char”截断
warning C4309: “初始化”: 截断常量值
当单引号内的字符数char_nums(1 < char_nums < 4)时,编译代码时只会出现警告,并不会报错。单引号内有2-4个字符时,编辑器将其看为int类型(4字节),在输出结果时,只会输出一个字节,从前往后截断到剩1字节时停止,得到1个字符输出。
2. 当char_nums > 4时
int main() {
char ch1 = 'abcde'; //报错,2、单引号内只能有一个字符,不可以是字符串
system("pause");
return 0;
}
error C2015: 常量中的字符太多
当单引号内的字符数char_nums( char_nums > 4)时,编译代码时会报错。单引号内超过了4个字符以后,也就是说超过了int类型的内存4字节,此时就会报错:常量中的字符数太多。
2、解决方法
字符型变量只允许单引号内写入一个字符,不允许写入多个字符,如果需要写入多个字符就定义字符串型变量即可。
数据类型:字符型char
#include <iostream>
using namespace std;
#include <string>
int main() {
//char的正确使用
char ch = 'a';
cout << ch << endl;
//当需要写入多个字符时,定义string变量
string str = "abcde";
cout << str << endl;
system("pause");
return 0;
}