千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > c++ case语句详解

c++ case语句详解

来源:千锋教育
发布人:xqq
时间: 2023-11-22 05:34:20 1700602460

一、c++ case语句

c++中的case语句是一种基于值的条件语句,常用于switch语句中。case语句会对其后面的表达式进行匹配,当匹配成功时,会执行该匹配的语句块。格式如下:


switch(表达式)
{
   case 值1:
      语句块1;
      break;
   case 值2:
      语句块2;
      break;
   //更多case
   default:
      默认语句块;
}

上述代码中,表达式被用来进行匹配,如果匹配成功,则会执行对应的语句块,直到遇到break语句或者switch语句结束。

二、c++ case语句可以为空吗

在c++中,case语句可以为空,但是需要注意一点,每个case后面需要加上一个语句块或者一个分号,否则会出现编译错误:


switch(a)
{
   case 1: ;
   case 2: 
      语句块1;
      break;
}

三、c++ case用法

c++中的case语句可以用于以下方面:

1、多分支的条件语句

case语句可以根据表达式的值进行匹配,从而执行对应的语句块。常用于多分支的条件判断:


switch(a)
{
   case 1:
      语句块1;
      break;
   case 2:
      语句块2;
      break;
   //更多case
   default:
      默认语句块;
}

2、枚举类型的条件语句

对于枚举类型的变量,可以使用case语句进行条件匹配:


enum WEEKDAY {MON, TUE, WED, THU, FRI, SAT, SUN};

WEEKDAY day = MON;

switch(day)
{
   case MON:
      语句块1;
      break;
   case TUE:
      语句块2;
      break;
   //更多case
   default:
      默认语句块;
}

3、数字范围的条件语句

可以使用case语句进行数字范围的条件匹配:


int num = 10;

switch(num)
{
   case 1 ... 10:
      语句块1;
      break;
   case 11 ... 20:
      语句块2;
      break;
   //更多case
   default:
      默认语句块;
}

四、c++ case范围

在c++中,case语句可以使用数字范围进行匹配,使用“...”进行表示,如下所示:


switch(num)
{
   case 1 ... 10:
      语句块1;
      break;
   case 11 ... 20:
      语句块2;
      break;
   //更多case
   default:
      默认语句块;
}

需要注意的是,case语句中只能使用常量表达式,不能使用变量表达式。

五、c++ case内定义变量

在c++中,case语句可以定义变量,但是需要注意变量的作用域问题:


int num = 1;

switch(num)
{
   case 1:
      int i = 0;
      语句块1;
      break;
   case 2:
      语句块2;
      break;
   //更多case
   default:
      默认语句块;
}

cout << i << endl; //编译错误,i的作用域只在case语句内部

六、c++ case和验证平台交互

在一些验证平台上,例如UVM中,case语句被用来进行测试用例的设计和生成,例如:


virtual task run_phase(uvm_phase phase);
   phase.raise_objection(this);
 
   repeat(10) begin
      randcase
      10: begin
         bit [7:0] data;
         $display("read register value 0x%0h", m_reg_file.read(REG_ADDR));
         data = $urandom_range(0, 255);
         m_reg_file.write(REG_ADDR, data);
         $display("write register value 0x%0h", data);
      end
      90: begin
         bit [7:0] data;
         $display("read register value 0x%0h", m_reg_file.read(REG_ADDR));
         data = $urandom_range(0, 255);
         m_reg_file.write(REG_ADDR, data);
         $display("write register value 0x%0h", data);
      end
      endcase
   end
 
   phase.drop_objection(this);
endtask

上述代码中,使用randcase语句构造了两个测试用例,分别占比10%和90%。

七、c++ case后面的表达式

在c++中,case语句后面的表达式可以是任意的表达式,比如常量表达式、变量表达式、函数调用等等:


int num = 10;

switch(num+1)
{
   case 1 ... 10:
      语句块1;
      break;
   case getValue():
      语句块2;
      break;
   //更多case
   default:
      默认语句块;
}

八、c++语言case语句用法

c++中的case语句是一种基于值的条件语句,常用于switch语句中。case语句会对其后面的表达式进行匹配,当匹配成功时,会执行该匹配的语句块。在c++中,case语句可以用于多分支的条件判断、枚举类型的条件判断、数字范围的条件判断等等。另外,case语句可以定义变量,但是需要注意变量的作用域问题。

tags: c++case
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT