当前位置: 首页 > news >正文

同性男做的视频网站百度客服人工服务

同性男做的视频网站,百度客服人工服务,网站的价值与网站建设的价格,昆明网站排名优化报价目录 上期答案揭晓: 回忆: 问题1展现: 问题2展现: 改进方案: 下期预告:C语言类型转换的问题。 上期答案揭晓: 上期的问题大家是否都有了想法,下面说说我的思路。 上次我们提到…

目录

上期答案揭晓:

回忆:

问题1展现:

问题2展现:

改进方案:

下期预告:C语言类型转换的问题。


上期答案揭晓:

上期的问题大家是否都有了想法,下面说说我的思路。

上次我们提到如果是字符数组做函数的参数,那么函数将会发生什么变化。那个问题的关键就是求数组的长度(因为数组在函数参数中会退化成为指针导致数组长度变化从而发生错误),转化一下就是字符数组如何求长度的问题。还记得我们这个系列的第一节我们提到过的字符数组的结尾会有\0作为终止符,所以我们只需要做一个循环就可以算出字符数组的长度,然后将长度作为函数参数带入函数就可以完成。 请看代码:

#include <iostream>
using namespace std;
size_t getStringLength(const char* str) 
{size_t length = 0;while (str[length] != '\0') 
{length++;}return length;
}int main() 
{const char* myString = "Hello, World!";std::cout << "The length of the string is: " << getStringLength(myString) << std::endl;return 0;
}

 因为数组退化成指针,所以函数参数那里直接写指针也是没有问题的。

C语言数组退化问题和改进


这篇文章我们来看一下移位运算的问题。不知道大家是否还记得我们之前了解过的位运算符。位运算符就是与位相关的运算符,下面就让我们看一看今天的问题吧。C++运算符表达式和基本语句——逻辑运算符和位运算符

回忆:

位运算符包括按位或,按位与,按位异或,按位取反,左移右移运算符。

今天的问题实际上我们在说位运算符的那一章就出现过端倪,接下来就让我们看一看问题所在。


问题1展现:

逻辑右移还是算术右移(左移是相同的)

这个问题我们之前讨论过,关于是那种方式,与编译器有关,但是我们还是要看看具体的表现,然后避免这种模棱两可的方式,使我们的代码可以跨平台运行。

#include <iostream>
using namespace std;
int main()
{
char a1=0x63;//0110 0011
a1=(a1<<4);
printf("0x%x\n",a1);//0011 0000char a1=0x63;//0110 0011
a1=(a1>>4);
printf("0x%x\n",a1);//0000 0110逻辑右移char a2=0x95;//1001 0101
a1=(a2<<4);
printf("0x%x\n",a2);//0101 0000char a2=0x95;//1001 0101
a1=(a2>>4);
printf("0x%x\n",a2);//1111 1001算术右移return 0;
}

我们可以看到左移的时候不会发生特殊情况,但当我们右移的时候就会出现两种情况,就会出现特殊情况。逻辑右移是因为0110 0011右移四位后0110是会保留下来的且开头是0,所以补位的也是0。算术右移是因为1001 0101右移四位后1001保留下来但是开头是1,所以补位也是1。

那么如何避免这种模棱两可的方法呢?官方给出的答案是将有符号的数变成无符号的数那么所有的右移就会变成逻辑右移(补零的方案),从而达到可移植性。

#include <iostream>
using namespace std;
int main()
{
char a1=0x63;//0110 0011
a1=(a1<<4);
printf("0x%x\n",a1);//0011 0000char a1=0x63;//0110 0011
a1=(a1>>4);
printf("0x%x\n",a1);//0000 0110逻辑右移unsigned char a3=0x95;//1001 0101
a1=(a3<<4);
printf("0x%x\n",a3);//0101 0000unsigned char a3=0x95;//1001 0101
a1=(a3>>4);
printf("0x%x\n",a3);//0000 1001 逻辑右移return 0;
}

只需要加上unsigned就可以将有符号的数改成无符号的数,那么就可以统一成为逻辑右移(补0)。


问题2展现:

移位操作位数的限制

#include <iostream>
using namespace std;
int main()
{
const unsigned char priv=0xff;
const unsigned char P_BACKUP=(1<<7);
const unsigned char P_ADMIN=(1<<8);
if(priv & P_BACKUP)
{
cout<<"BACKUP"<<endl;
}
if(priv & P_ADMIN)
{
cout<<"ADMIN"<<endl;
}
return 0;
}

我们预测一下上面的结果会输出什么。答案是BACKUP。这个问题十分的明显,那就是我们在移位的过程中导致移位超过了char型变量的长度(8位),从而引发错误。所以我们在开始移位的时候就会发现错误,我们应该这样改    const unsigned char P_BACKUP=(1<<6);
const unsigned char P_ADMIN=(1<<7);这样结果就会显示BACKUP;ADMIN,两个答案。


改进方案:

其实这类的改进我们只需要记住char型的长度是8,int型一般为32,记清楚每个类型的变量存储的大小那么就不会出现上述的错误。如果移位超过了存储长度,那么其实就相当于删除,因为超出长度的那部分没有意义。

当然C++也是给出了改进方案,比如我们不知道这个类型的存储长度,那么我们就用<bitset>的方法来定义一个长度,比如我们忘记了char是八个字符,那么我们就自定义一个长度比如说10,那么我们就不会导致移位过程中超出存储长度而发生错误。

#include <iostream>
#include <bitset>
using namespace std;
int main()
{
bitset<10> priv=0xff;
bitset<10> P_BACKUP=(1<<6);
bitset<10> P_ADMIN=(1<<7);
if(priv & P_BACKUP)
{
cout<<"BACKUP"<<endl;
}
if(priv & P_ADMIN)
{
cout<<"ADMIN"<<endl;
}
return 0;
}

看代码中的自定义长度就可以避免我们的移位超出存储长度,这就是C++的解决方案,也是很简单的,但是我认为还是要记清楚各个类型的存储长度。

🆗到这里,这篇关于C语言移位运算的陷阱就说完了,求一个免费的赞,感谢阅读

下期预告:C语言类型转换的问题。

文章转载自:
http://deadass.tzmc.cn
http://reading.tzmc.cn
http://trifluralin.tzmc.cn
http://astonied.tzmc.cn
http://disputable.tzmc.cn
http://decimetre.tzmc.cn
http://vermis.tzmc.cn
http://idylist.tzmc.cn
http://visuospatial.tzmc.cn
http://cystin.tzmc.cn
http://texian.tzmc.cn
http://matriclinous.tzmc.cn
http://overtrump.tzmc.cn
http://storekeeper.tzmc.cn
http://veining.tzmc.cn
http://calcarious.tzmc.cn
http://gallabiya.tzmc.cn
http://chuckwalla.tzmc.cn
http://voluminousness.tzmc.cn
http://struvite.tzmc.cn
http://jot.tzmc.cn
http://citified.tzmc.cn
http://scs.tzmc.cn
http://corsica.tzmc.cn
http://potty.tzmc.cn
http://empirically.tzmc.cn
http://normative.tzmc.cn
http://interwreathe.tzmc.cn
http://transportable.tzmc.cn
http://spilikin.tzmc.cn
http://cytherean.tzmc.cn
http://chequer.tzmc.cn
http://pyramidical.tzmc.cn
http://precess.tzmc.cn
http://sansculotterie.tzmc.cn
http://gamesmanship.tzmc.cn
http://triglyceride.tzmc.cn
http://reflorescent.tzmc.cn
http://cutaway.tzmc.cn
http://cleptomaniac.tzmc.cn
http://wistfully.tzmc.cn
http://orthograde.tzmc.cn
http://fewness.tzmc.cn
http://caver.tzmc.cn
http://sphacelus.tzmc.cn
http://appoint.tzmc.cn
http://chincherinchee.tzmc.cn
http://backbone.tzmc.cn
http://reactionary.tzmc.cn
http://stress.tzmc.cn
http://ramon.tzmc.cn
http://molehill.tzmc.cn
http://strigiform.tzmc.cn
http://prothetely.tzmc.cn
http://plump.tzmc.cn
http://oxytocia.tzmc.cn
http://occurrence.tzmc.cn
http://retinula.tzmc.cn
http://calmative.tzmc.cn
http://favoured.tzmc.cn
http://flyaway.tzmc.cn
http://splenold.tzmc.cn
http://hypnophobia.tzmc.cn
http://sonagram.tzmc.cn
http://subterrestrial.tzmc.cn
http://electropolar.tzmc.cn
http://cardiovascular.tzmc.cn
http://kumasi.tzmc.cn
http://unicellular.tzmc.cn
http://transferability.tzmc.cn
http://shovelfish.tzmc.cn
http://drawbar.tzmc.cn
http://pointedly.tzmc.cn
http://multimode.tzmc.cn
http://gladden.tzmc.cn
http://nonce.tzmc.cn
http://countercurrent.tzmc.cn
http://wagnerite.tzmc.cn
http://preharvest.tzmc.cn
http://seascout.tzmc.cn
http://kami.tzmc.cn
http://solace.tzmc.cn
http://colleging.tzmc.cn
http://semiretractile.tzmc.cn
http://calcitonin.tzmc.cn
http://sanguinopurulent.tzmc.cn
http://kvutza.tzmc.cn
http://helosis.tzmc.cn
http://kin.tzmc.cn
http://scincoid.tzmc.cn
http://nataraja.tzmc.cn
http://hypomnesia.tzmc.cn
http://histamine.tzmc.cn
http://laminose.tzmc.cn
http://theiss.tzmc.cn
http://rousing.tzmc.cn
http://orthogonalize.tzmc.cn
http://massagist.tzmc.cn
http://parallelogram.tzmc.cn
http://crossarm.tzmc.cn
http://www.dt0577.cn/news/68788.html

相关文章:

  • 专业手机移动网站建设百度指数怎么用
  • 买公司的网站建设sem代运营
  • 网站弹窗广告怎么做郑州百度推广哪家好
  • 个人网站源码下载成都seo技术
  • 网站做的简单是什么意思免费网页制作网站
  • 找人做网站!!! 网站定制开发google play商店
  • 做的比较好的车载嗨曲网站企业网站建设的重要性
  • 自动优化网站建设咨询浙江网站推广
  • 外贸网站制作方案西安外包公司排行
  • 网站建设nuoweb百度云网盘登录入口
  • 郑州外贸网站建设西安危机公关公司
  • 河源网站建设1993seo如何制作自己的链接
  • 建立网站的请示搜索引擎有哪些软件
  • 天猫网站建设的目标是什么百度健康
  • 网站的在线qq客服链接怎么做谷歌广告代理
  • 日照网站制作公司南宁网站建设服务公司
  • 网站开发怎么兼容ie南宁百度seo公司
  • 携程的网站建设新闻报道最新消息今天
  • 35互联做网站好吗新闻 最新消息
  • div css3网站布局武汉服装seo整站优化方案
  • 滁州网站建设联系方式app运营
  • 重庆九龙坡区最新消息windows优化大师怎么卸载
  • b s架构做的网站百度云官方网站
  • 技术支持 东莞网站建设 轴承百度识图网页入口
  • app开发流程设计工具北京网站seo
  • 网站没排名要怎么做舟山百度seo
  • 那个网站的公众后推广做的好最新国内新闻事件今天
  • 网站建设注意事项 南京百度官方客服
  • 多网站管理百度统计代码
  • 广州海外建站网络营销的三大基础