判断(switch和if)
创始人
2025-05-31 19:33:35
0
  1. if(a=b)

如果b的值为0,那么a=b的值就为0,if里面判断的值就是false

  1. if else成对出现

思考

if(a==1)if(b==2) std::cout,<<"b-2";
elsestd::cout<

当a为2时,这里输出什么

这里什么都不输出

解析:因为if和else是一对的

if里面的数值

if(a&&b)相当于a!=0&&b!=0

if(!a)相当于if(a==0)

思考

下面哪种写法更好

bool  a {500};
int c {100};
if((c*100+c++)&&a)  //写法1
{...
}
//写法2
// if(a&&(c*100+c++)) 
//{
//    ...
//}

第二种更好

因为如果a是false,第二种后面的代码就不用执行了,而第一种方法c*100+c++还要执行一次

if临时变量的声明

if(条件)
{临时变量
}
else
{临时变量
}

缺点:如果要使用同一个临时变量,就要声明两次

++17新语法

if(变量声明;条件)
{}
else
{}

这里声明一次变量,if和else中都能使用

特别注意*:这里的变量声明只能声明一种类型的变量

switch临时变量的声明

switch 3
{case 2:int a=9;break;case 3:break;
}

特别注意*:每次用完case 后,要记得用break,不然程序就会执行到下一个case

这种声明临时变量的方式是错误的,因为a生命周期在括号内有效,当switch选择的是3,就跳过了a的初始化,但是a又是有效的,这就产生了矛盾,解决方式就是在case 2下面把语句块括起来

C++17新语法

switch (变量声明;值)
{case 2:int a=9;break;case 3:break;
}

if和switch比较

if (a == 500)
00E915F1  cmp         dword ptr [a],1F4h  
00E915F8  jne         main+50h (0E91610h)  00E9160E  jmp         main+82h (0E91642h)  
else if (a == 600)
00E91610  cmp         dword ptr [a],258h  
00E91617  jne         main+6Fh (0E9162Fh)  00E9162D  jmp         main+82h (0E91642h)  

if底层是用了cmp指令,每次用if都要用一次cmp指令,cmp指令是用来比较的

switch (a)
00E91642  mov         ecx,dword ptr [a]  
00E91645  mov         dword ptr [ebp-10h],ecx  
00E91648  cmp         dword ptr [ebp-10h],1F4h  
00E9164F  je          main+9Ch (0E9165Ch)  
00E91651  cmp         dword ptr [ebp-10h],258h  
00E91658  je          main+0B2h (0E91672h)  
00E9165A  jmp         main+0C7h (0E91687h)  {case 500:std::cout << "a=500";
00E9165C  push        0E98D30h  
00E91661  mov         edx,dword ptr [__imp_std::cout (0E9C0CCh)]  
00E91667  push        edx  
00E91668  call        std::operator<< > (0E9129Eh)  
00E9166D  add         esp,8  break;
00E91670  jmp         main+0DBh (0E9169Bh)  

switch底层原理是提前把所有选项放在一个表里面,然后去查这个表,查到了对应数值之后,会给一个内存地址 ,直接跳转到这个选项,如果有许多个选项,用switch,效率更高

相关内容

热门资讯

刁蛮公主逍遥王有第二部吗 刁蛮公主逍遥王有第二部吗没有,这是很早的片子了吧
只有5000元想创业 如何创业... 如果你也想在家自由创业,那方式也不少:1、做短视频,当下无意是非常适合自由创业的模式,无论身处何地,...
MIT工科生跨界AI,独作论文...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! MIT理工男跨界艺术...
创业新项目 创业新项目 创业新...  我们知道,在创业的过程中,如果总是固步自封,一成不变,终会被社会所淘汰。而那些能够突破创新的,总是...
IEEE专家展望人工智能机器人... 中新网北京6月16日电 国际电器与电子工程师协会(IEEE)16日分享一篇专家文章,展望人工智能(A...
5月份全国生产资料市场价格环比... 成品油价格环比下降4.3%,同比下降12.1%,其中,92号汽油、95号汽油、0号柴油环比下降4.5...
找不到创业项目是你在犹豫!云纸... 近两年有个行业正在悄然崛起,默默绕过了共享充电宝、共享单车,自己发展,终于在2020年开始备受老百姓...
国家统计局:多因素共同作用致今... 转自:上观新闻针对今年以来中国货物进口下降的情况,中国国家统计局新闻发言人付凌晖16日回应说,这是国...
沧月羽系列全集哪里有 沧月羽系列全集哪里有第四部都还没有消息,怎么会有全集。前三部以出版,买书吧目前只出了三本 而且还不知...
广西鹿寨县严把电线电缆质量关 中国质量新闻网讯 为保障群众生命财产安全,近日,广西鹿寨县市场监管局在辖区范围内开展在售电线电缆专项...
雪人股份:投资者欲对接财务部被... 投资者提问:贵司整体经营状态良好,我们这边有一些地方政策及金融支持,请问方便给予贵司财务部联系方式,...
广西“桂字号”夏季水果香飘北京 钦州荔枝、北流荔枝、百色芒果、平南石硖龙眼……6月14日,在北京新发地国际农产品会展中心,2025年...
2020年创业新项目有什么? ... 5G时代的技术加持下,短视频营销潮流肯定会势不可当。因为凭借适应性广、传播性强、承载量大等特点,短视...
剖判华大学生创业贷款微信dxs... 华安宝利基金-日海通讯证监会制定了《关于加强新股发行监管的措施》,5G网络建设还将带动产业链上下游以...
民族文创“潮变”:创新力量让千... 中新网北京6月16日电 (黄欣欣)近日,由国家民委文化宣传司主办的铸牢中华民族共同体意识主题文创交流...
新鲜茶树菇不能和什么一起吃 新鲜茶树菇不能和什么一起吃新鲜的茶树菇是可以吃的,所以他没有说不能和别的不能一起吃,一般情况下因为它...
2020小本创业好项目 适合小... 零食小屋随着人们生活水平的不断提高,包装精美、口味独特的健康零食,将越来越受到人们的青睐。加之春节将...
抓!一名网上在逃人员在华阴落网 近日,华阴市公安局西岳派出所持续深化追逃工作,强化信息研判与合成作战能力,经过走访摸排和调查研判,6...
国家广播电视总局实施针对互联网... 观点网讯:据人民日报,近日,国家广播电视总局实施针对互联网电视自动续费服务的专项规范管理措施。此次治...
5月市场销售明显回升 以旧换新... 转自:央视新闻客户端国家统计局发布的最新统计数据显示,5月份,市场销售明显回升,以旧换新相关商品快速...