3 回答
TA贡献1780条经验 获得超5个赞
new char(1024); 括号中的值太大了,超过char定义的范围,结果是无定义的(由实现定义),所以编译器给出了一个警告,这个算是类型方面的小小错误。
VC系列:
char : -128 ~ 127
unsigned char : 0 ~ 255
signed char: -128 ~ 127
把括号中的值该到范围内(-128 ~ 127)就可以了。
看看下面这个:
unsigned char p = 257; // p 等于多少????
signed char p = 128; // p等于多少???
TA贡献1821条经验 获得超6个赞
应该改成这样:
dev_name = new char[20];
RecvDataBuffer = new char[1024];
括号用错了,
dev_name = new char(20);
分配一个字节 ,没有问题,分配同时初始化 *dev_name= 20,在 0~255 或 -128~127 之间。
RecvDataBuffer = new char(1024);
分配一个字节 ,分配同时初始化 *RecvDataBuffer = 1024,问题来了,不在在 0~255 或 -128~127 之间
overflow in implicit constant conversion
溢出在隐式常量转换
看1024 比127 或255大多了,当然溢出了!
TA贡献1848条经验 获得超10个赞
你的程序用new是分配一个字符呢还是分配一段连续的空间?这个问题你没有明确,如果是分配一个字符的话,第二个有问题,你括号里面的是整型值,而char的范围最大都只能取到255,而1024,明显溢出了,所以编译会出问题,如果是分配数组的话,应该是new 元素类型[分配的大小],不是你所用的括号
- 3 回答
- 0 关注
- 331 浏览
添加回答
举报