找回密码
 立即注册
收起左侧

数据类型转换

10
回复
12292
查看
[复制链接]
累计签到:147 天
连续签到:1 天
来源: 2019-9-22 23:11:30 显示全部楼层 |阅读模式
1Qter豆
不同类型数据提示警告

char data;
uint8_t ch;
ch =
data++;//在这一句提示警告 warning: implicit conversion changes signedness: 'char' to 'uint8_t' (aka 'unsigned char')


这样的语句在VS中没有问题,想问一下怎么能够消除这样的警告?
顺便还有以下几个情况的警告

send_data.append(crc_value&0x00ff);//crc_value是 uint16_t 类型


这种情况提示的警告 warning: implicit conversion changes signedness: 'int' to 'char'
虽然冒着警告编译运行没问题,但是有警告不踏实。

希望大家帮忙解答一下{:3_60:}

最佳答案

查看完整内容

是啊,不同类型转换最好在前面自己强制转换,char型会根据ASCII码帮你转了成对应int型再进行运算,你会发现自己打印出来的结果可能会看不懂。比如说你想直接显示 “aaa”和110, 如下定义: cahr* a = "aaa"; int b= 110; 直接printf("%d",a+b),或者printf("%s",a+b),都得不到“aaa110”。(aaa转成int型是一个很大的数,110转成char型是小写n) 原因是一个char型,一个int型,系统会根据%后面的格式确定你要的是int型还是char型。 ...
回复

使用道具 举报

累计签到:94 天
连续签到:1 天
2019-9-22 23:11:31 显示全部楼层
本帖最后由 Sehin_春子 于 2019-9-25 09:31 编辑

是啊,不同类型转换最好在前面自己强制转换,char型会根据ASCII码帮你转了成对应int型再进行运算,你会发现自己打印出来的结果可能会看不懂。比如说你想直接显示 “aaa”和110,
如下定义:
cahr* a = "aaa";
int b= 110;
直接printf("%d",a+b),或者printf("%s",a+b),都得不到“aaa110”。(aaa转成int型是一个很大的数,110转成char型是小写n)
原因是一个char型,一个int型,系统会根据%后面的格式确定你要的是int型还是char型。
回复

使用道具 举报

累计签到:147 天
连续签到:1 天
2019-9-22 23:13:02 显示全部楼层
char *data;
uint8_t ch;
ch = *data++;

发上去的代码没显示完,重新发一下
回复

使用道具 举报

累计签到:147 天
连续签到:1 天
2019-9-23 10:05:43 显示全部楼层
还是我个人基础不牢啊
现在修改为下面形式消除了警告
  1. ch = static_cast<uint8_t>(*data++);

  2. send_data.append(static_cast<char>(crc_value&0x00ff));
复制代码


没有权限发链接,搜索 QT强制类型转换 看到的一篇博客里介绍了
回复

使用道具 举报

累计签到:147 天
连续签到:1 天
2019-9-24 18:45:25 显示全部楼层
Sehin_春子 发表于 2019-9-24 15:11
是啊,不同类型转换最好在前面自己强制转换,char型会根据ASCII码帮你转了成对应int型再进行运算,你会发现 ...

多谢指教,以后会多注意的。以前在写点程序直接用(type)这种转换也没啥大问题,在QT里就提示是使用旧格式
还是对程序了解不够啊,继续努力,嘿嘿
回复

使用道具 举报

累计签到:147 天
连续签到:1 天
2019-9-24 18:51:28 显示全部楼层
顺着再问一个问题,设计模式下拖进去一个Wiget控件,选择提升类为QChartView 之后 ,工程的 UI 变量不能用了

错误提示 error: cannot initialize object parameter of type 'Ui_mychart' with an expression of type 'Ui::mychart'
回复

使用道具 举报

累计签到:94 天
连续签到:1 天
2019-9-24 19:57:58 显示全部楼层
怦然心动如往昔 发表于 2019-9-24 18:45
多谢指教,以后会多注意的。以前在写点程序直接用(type)这种转换也没啥大问题,在QT里就提示是使用旧格式 ...

不同编译工具的原因吧,环境不一样,识别不了,最开始我们写C都是直接在前面加括号强转的。
回复

使用道具 举报

累计签到:94 天
连续签到:1 天
2019-9-24 20:05:05 显示全部楼层
怦然心动如往昔 发表于 2019-9-24 18:51
顺着再问一个问题,设计模式下拖进去一个Wiget控件,选择提升类为QChartView 之后 ,工程的 UI 变量不能用 ...

你的QChartView要是继承QWidget才行的哦。提升是同一类应该不会报错的。还有就是你到提升的类那里看看添加的类名和路径是否正确,可能名字大小写错了。问问题最好贴图看看
回复

使用道具 举报

累计签到:147 天
连续签到:1 天
2019-9-24 20:45:05 显示全部楼层
Sehin_春子 发表于 2019-9-24 20:05
你的QChartView要是继承QWidget才行的哦。提升是同一类应该不会报错的。还有就是你到提升的类那里看看添 ...

没有提升后的头文件,需要额外什么操作吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:147 天
连续签到:1 天
2019-9-24 20:49:12 显示全部楼层
提升完是需要自己去实现这个类吗?
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2019-9-26 18:13:13 显示全部楼层
强制类型转换就不会有警告了 ~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了