经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C-switch case之如何巧妙判断范围区域
来源:cnblogs  作者:NQian  时间:2018/12/12 9:52:36  对本文有异议

当判断整数时

  • 示例: 判断整数范围
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. unsigned char buf[6]={0x00,0x07,0x11,0x60,0x61,0x66};
  6. for(int i=0;i<6;i++)
  7. switch(buf[i])
  8. {
  9. case 0x00 ... 0x10: printf("buf[%d] is 0x0 ~0x10\n",i); break;
  10. case 0x11 ... 0x20: printf("buf[%d] is 0x11~0x20\n",i); break;
  11. case 0x30 ... 0x60: printf("buf[%d] is 0x30~0x60\n",i); break;
  12. case 0x61 ... 0xff: printf("buf[%d] is 0x61~0xff\n",i); break;
  13. }
  14. }

打印:

 

当判断字符时

  • 示例: 将"0x00"~"0xff"转化为数值0x00~0xff
  1. #include <stdio.h>
  2.  
  3.  
  4. int main()
  5. {
  6. char buf[6][6]={"0xff","0X02","0X1f","0xf1","0xa1","0Xb0"};
  7. for(int i=0;i<6;i++)
  8. if(buf[i][0]=='0'&&(buf[i][1]=='x' || buf[i][1]=='X')) //匹配前缀
  9. {
  10. unsigned char val=0;
  11. int err=0;
  12. for(int j=2;j<4;j++)
  13. switch(buf[i][j])
  14. {
  15. case '0' ... '9' : val= val*16 + (buf[i][j]-'0'); break;
  16. case 'a' ... 'f' : val= val*16 + (buf[i][j]-'a'+10); break;
  17. case 'A' ... 'F' : val= val*16 + (buf[i][j]-'A'+10); break;
  18. default : err =1; break;
  19. }
  20. if(!err)
  21. printf("buf[%d] = 0X%02X\n",i,val);
  22. else
  23. printf("buf[%d] ERR \n",i);
  24. }
  25. else
  26. printf("buf[%d] ERR \n",i);
  27. }

打印:

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号