3 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
new char(1024); 括號(hào)中的值太大了,超過char定義的范圍,結(jié)果是無定義的(由實(shí)現(xiàn)定義),所以編譯器給出了一個(gè)警告,這個(gè)算是類型方面的小小錯(cuò)誤。
VC系列:
char : -128 ~ 127
unsigned char : 0 ~ 255
signed char: -128 ~ 127
把括號(hào)中的值該到范圍內(nèi)(-128 ~ 127)就可以了。
看看下面這個(gè):
unsigned char p = 257; // p 等于多少????
signed char p = 128; // p等于多少???

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
應(yīng)該改成這樣:
dev_name = new char[20];
RecvDataBuffer = new char[1024];
括號(hào)用錯(cuò)了,
dev_name = new char(20);
分配一個(gè)字節(jié) ,沒有問題,分配同時(shí)初始化 *dev_name= 20,在 0~255 或 -128~127 之間。
RecvDataBuffer = new char(1024);
分配一個(gè)字節(jié) ,分配同時(shí)初始化 *RecvDataBuffer = 1024,問題來了,不在在 0~255 或 -128~127 之間
overflow in implicit constant conversion
溢出在隱式常量轉(zhuǎn)換
看1024 比127 或255大多了,當(dāng)然溢出了!

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
你的程序用new是分配一個(gè)字符呢還是分配一段連續(xù)的空間?這個(gè)問題你沒有明確,如果是分配一個(gè)字符的話,第二個(gè)有問題,你括號(hào)里面的是整型值,而char的范圍最大都只能取到255,而1024,明顯溢出了,所以編譯會(huì)出問題,如果是分配數(shù)組的話,應(yīng)該是new 元素類型[分配的大小],不是你所用的括號(hào)
- 3 回答
- 0 關(guān)注
- 368 瀏覽
添加回答
舉報(bào)