swichcase:左移(右移)运算符结合swich case语句详解



昨天看了个代码感觉有意思所以拿出来分享下顺便讲下左移和右移初学者们都知道在最常见输入输出中cout和cin后总是跟个>>和<<可是初学者未必知道这两个符号还是两种运算符今天我们就来结合例子代码来讲讲它使用方法
定义:
左移运算符 (<<) 将第个操作数向左移动第 2个操作数指定位数第 2个操作数类型必须是
右移运算符 (>>) 将第个操作数向右移动第 2个操作数所指定位数

# <iostream>
using std;

(void)
{
a;
cout <<"please input a number:\n";
cin >>a;

c1 = a%3 0;//%整除符号结果为余数比如%3结果是
c2 = a%5 0;//判断式子左边值是否和右边值相等相等结果为true反的为flase
c3 = a%7 0;

switch((c1<<2)+(c2<<1)+c3){
0: cout <<"不能被,5,7整除.\n"; ;
1: cout <<"只能被整除.\n"; ;
2: cout <<"只能被整除.\n"; ;
3: cout <<"可以被,7整除.\n"; ;
4: cout <<"只能被3整除.\n"; ;
5: cout <<"可以被,7整除.\n"; ;
6: cout <<"可以被,5整除.\n"; ;
7: cout <<"可以被,5,7整除.\n"; ;
}
}

我们来看上面段代码我昨天刚看这段代码时候是头雾水不明白它运行原理而它很准确结果却吸引了我后来发现这段代码其实是很深我们假设输入a值为9下面我分步骤分析它过程
1. c1 = a%3 0;
c2 = a%5 0;
c3 = a%7 0;
执行这 3句结果分别为c1=1,c2=0,c3=0
2. (c1<<2)+(c2<<1)+c3
最核心部分了由上面我们可以知道c1=1所以c1<<2意思就是将c1 2进制值左移两位1 2进制是1左移两位是100转换为10进制为4;由于c2,c3都为0所以移位后也为0所以这个表达式最后值为4.
3. 4即为输出“只能被3整除”和事实相符分析完毕
想:为什么7种区别结果对应7个区别数字?
Tags:  sunsetswich swich 左移运算符 swichcase

延伸阅读

最新评论

发表评论