永发信息网

为什么在一个delay函数中,把延时变量设为char格式,能正常运行,设为int格式就不能

答案:2  悬赏:60  手机版
解决时间 2021-12-19 05:52
51单片机语言
void delay(unsigned int z)
{
unsigned char x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--)

}
这个函数,Z赋值600,运行花了28秒,可是如果把X,Y的变量类型从char 改成int 。运行起来就要222秒,为什么?变量类型的改变对函数应该没什么大影响吧?。而且本来char的类型,对X来说600应该是超出计数范围,应该是不能运行才对啊,为什么感觉运行话费的28秒这个时间比改成int 类型的时间来得正常??
最佳答案
char*转换

Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换
Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型
在Qt下怎样将QString转char*呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。
因为char*最后都有一个‘/0’作为结束符,而采用QString::toLatin1()时会在字符串后面加上‘/0’
方法如下:
Qstring str;
char* ch;
QByteArray ba = str.toLatin1();
ch=ba.data();
这样就完成了QString向char*的转化。经测试程序运行时不会出现bug
注意第三行,一定要加上,不可以str.toLatin1().data()这样一部完成,可能会出错。

补充:以上方法当QString里不含中文时,没有问题,但是QString内含有中文时,转换为char*就是乱码,采用如下方法解决:
方法1:
添加GBK编码支持:
#include
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
然后改变上面的第三行为:QByteArray ba = str.toLoacl8Bit(); toLoacl8Bit支持中文
方法2:
先将QString转为标准库中的string类型,然后将string转为char*,如下:
std::string str = filename.toStdString();
const char* ch = str.c_str();
全部回答
不是编译器的问题,因为你用的是8位机,你char类型的进行一次加法只要1条指令,而int类型的却要两条指令才能完成。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
这题数学题怎么做?一工厂生产某种产品x件的
单选题一定条件下,在一个具有活塞的密闭容器
-- beautiful day it is! Let’s go climbing
单选题19世纪晚期到20世纪初期,美德两国经济
.Nobody knew when the fire , but they knew
新买的小米4手机玩着玩着总是自动关机怎么回
新乡到濮阳信件多长时间能到?
单选题Jackismybrother.Heis________.A.
新乡高新技术开发区火炬园在哪?
质量的主单位是________,常用单位还有______
单选题下列物品中,通常情况下属于导体的是A.
空调排水是红色的是什么原因
单选题北京奥运会开幕式之前,阿迪达斯、可口
求《重生之玩转豪门》的全文加番外,快快哦,
—What’s the time?—It’s 12:00. Let’s g
推荐资讯
物理中什么情况下需要估读
泽库县交警大队位置在什么地方啊,我要过去办
单位拖欠养老保险怎么办?急盼好心人解答!!
用像片咒人死
雷锋精神是我们中华民族宝贵的精神财富,2013
求一部电影是僵尸片里面的僵尸被丢油锅炸了是
微信隐身挂怎么找出来
泌阳县驻马店刘家牌皮鞋怎么去啊,谁知道地址
怎样计算箍筋配筋率,计算箍筋配筋率时,箍筋的
选出划线字的解释不正确的一项:A.不战而屈人
电信积分怎么兑换话费
公司没钱拖欠工资怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?