请选择 进入手机版 | 继续访问电脑版

专注代码检测 - 阅镜

 找回密码
 立即注册
热搜: 安装 代码
查看: 106|回复: 0

switch中应有default

[复制链接]

70

主题

70

帖子

232

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
232
发表于 2021-9-10 14:53:27 | 显示全部楼层 |阅读模式
switch中应该有default,以处理各种预期外的情况。这可以确保switch接受用户输入,或者后期在其他开发者修改函数后确保switch仍可以覆盖到所有情况,并确保逻辑正常运行。

  1. // Bad
  2. int Foo(int bar) {
  3.   switch (bar & 7) {
  4.     case 0:
  5.       return Foobar(bar);
  6.       break;
  7.     case 1:
  8.       return Foobar(bar * 2);
  9.       break;
  10.   }
  11. }
复制代码

例如上述代码switch的取值可能从0~7,所以应当有default:

  1. // Good
  2. int Foo(int bar) {
  3.   switch (bar & 7) {
  4.     case 0:
  5.       return Foobar(bar);
  6.       break;
  7.     case 1:
  8.       return Foobar(bar * 2);
  9.       break;
  10.     default:
  11.       return -1;
  12.   }
  13. }
复制代码

关联漏洞:

  1.   中风险-逻辑漏洞

  2.   中风险-内存泄漏
复制代码
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ|Archiver|手机版|小黑屋| 阅镜 ( 京ICP备2020034574号 )|网站地图|网站地图点击这里给我发消息

GMT+8, 2022-1-17 08:36 , Processed in 0.047863 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表