这个代码,改如何简化?

xingguyuwang 2013-03-27 10:10:50
if( i == 1 || i == 5 || i ==7 || i ==90 || i ==250 || i ==500 || i ==999 || 还有很多)



这个代码,有没有简化的方法?太多i ==了。。
...全文
156 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-03-27
  • 打赏
  • 举报
回复
switch不错。 要不就利用集合类,构造集合,判断元素是否在集合中。
傻傻不解释 2013-03-27
  • 打赏
  • 举报
回复
引用 7 楼 mujiok2003 的回复:
可以解决 C/C++ code?1234567static int const table[] = {1,3,5,7,9}; static int const* end = table + sizeof(table)/sizeof(table[0]);int const* p = std::find(table, end, val);//如果很多,可以保持table有序……
这个 感觉不错 没用过!!!
hepper 2013-03-27
  • 打赏
  • 举报
回复
放数组里,然后查找?
zilaishuichina 2013-03-27
  • 打赏
  • 举报
回复
引用 5 楼 xingguyuwang 的回复:
i是没有规律的。 我就是嫌if写的太长了。 switch case不是更多代码吗? 引用 2 楼 zilaishuichina 的回复:如果你的i是完全没有规律的 那貌似只能这样写 如果你只是嫌if会写的太长 不好看 你可以用 switch case
个人习惯是 switch case 竖起来写 比一长串的if判断要好看

if( i == 1 || i == 5 || i ==7 || i ==90 || i ==250 || i ==500 || i ==999 || 还有很多)
{}
else if (i == 2 || i == 22 || i == 222 || 还有很多)
{}
else
{}
VS

switch(i)
{
    case 1:
    case 5:
    case 7:
    case 90:
    case 250:
    case 500:
    case 999:
    case 还有很多:
        //do something
        break;
    case 2:
    case 22:
    case 222:
    case 还有很多:
        //do something
        break;
    default:
        //do something
        break;
}
mujiok2003 2013-03-27
  • 打赏
  • 举报
回复
可以解决

static int const table[] = {1,3,5,7,9}; 
static int const* end = table + sizeof(table)/sizeof(table[0]);
int const* p = std::find(table, end, val);//如果很多,可以保持table有序,然后二分查找
if(p != end)
{
  // rock and roll
}

xingguyuwang 2013-03-27
  • 打赏
  • 举报
回复
i是没有规律的,某个数集。
引用 4 楼 dy106 的回复:
引用 3 楼 xingguyuwang 的回复:不明白,能吗? 引用 1 楼 dy106 的回复:取反: C/C++ code?123456if(i == something)else{//执行if( i == 1 || i == 5 || i ==7 || i ==90 || i ==250 || i ==500 || i ==999 || 还有很多)后面的……
xingguyuwang 2013-03-27
  • 打赏
  • 举报
回复
i是没有规律的。 我就是嫌if写的太长了。 switch case不是更多代码吗?
引用 2 楼 zilaishuichina 的回复:
如果你的i是完全没有规律的 那貌似只能这样写 如果你只是嫌if会写的太长 不好看 你可以用 switch case
_sunshine 2013-03-27
  • 打赏
  • 举报
回复
引用 3 楼 xingguyuwang 的回复:
不明白,能吗? 引用 1 楼 dy106 的回复:取反: C/C++ code?123456if(i == something)else{//执行if( i == 1 || i == 5 || i ==7 || i ==90 || i ==250 || i ==500 || i ==999 || 还有很多)后面的语句 }
你的i可能是哪些值?
xingguyuwang 2013-03-27
  • 打赏
  • 举报
回复
不明白,能吗?
引用 1 楼 dy106 的回复:
取反: C/C++ code?123456if(i == something)else{//执行if( i == 1 || i == 5 || i ==7 || i ==90 || i ==250 || i ==500 || i ==999 || 还有很多)后面的语句 }
zilaishuichina 2013-03-27
  • 打赏
  • 举报
回复
如果你的i是完全没有规律的 那貌似只能这样写 如果你只是嫌if会写的太长 不好看 你可以用 switch case
_sunshine 2013-03-27
  • 打赏
  • 举报
回复
取反:

if(i == something)
else
{
//执行if( i == 1 || i == 5 || i ==7 || i ==90 || i ==250 || i ==500 || i ==999 || 还有很多)后面的语句

}

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧