初學(xué)者們都知道在最常見(jiàn)的輸入輸出函數(shù)中cout和cin后總是跟一個(gè)>>和<?墒浅鯇W(xué)者未必知道這兩個(gè)符號(hào)還是兩種運(yùn)算符,Examda就來(lái)結(jié)合實(shí)例代碼來(lái)講講它的用法。
定義:
左移運(yùn)算符 (<<) 將第一個(gè)操作數(shù)向左移動(dòng)第二個(gè)操作數(shù)指定的位數(shù)。第二個(gè)操作數(shù)的類(lèi)型必須是 int。
右移運(yùn)算符 (>>) 將第一個(gè)操作數(shù)向右移動(dòng)第二個(gè)操作數(shù)所指定的位數(shù)。
#include
using namespace std;
int main(void)
{
int a;
cout <<"please input a number:\n";
cin >>a;
int c1 = a%3 ==0;//%整除符號(hào),結(jié)果為余數(shù),比如%3,結(jié)果是。
int c2 = a%5 ==0;//==判斷式子左邊的值是否和右邊的值相等,相等結(jié)果為true,反之,為flase
int c3 = a%7 ==0;
switch((c1<<2)+(c2<<1)+c3){
case 0: cout <<"不能被,5,7整除.\n"; break;
case 1: cout <<"只能被整除.\n"; break;
case 2: cout <<"只能被整除.\n"; break;
case 3: cout <<"可以被,7整除.\n"; break;
case 4: cout <<"只能被3整除.\n"; break;
case 5: cout <<"可以被,7整除.\n"; break;
case 6: cout <<"可以被,5整除.\n"; break;
case 7: cout <<"可以被,5,7整除.\n"; break;
}
}
考試大提示: 看上面一段代碼,我們假設(shè)輸入a的值為9,下面考試大提示: 分步驟分析它的過(guò)程。
1. int c1 = a%3 ==0;
int c2 = a%5 ==0;
int c3 = a%7 ==0;
執(zhí)行這三句,結(jié)果分別為c1=1,c2=0,c3=0。
2. (c1<<2)+(c2<<1)+c3
最核心的部分了,由上面我們可以知道c1=1。所以c1<<2的意思就是將c1的二進(jìn)制值左移兩位,1的二進(jìn)制是1,左移兩位是100,轉(zhuǎn)換為10進(jìn)制為4;由于c2,c3都為0,所以移位后也為0。所以這個(gè)表達(dá)式最后的值為4.
3. 4即為輸出“只能被3整除?!迸c事實(shí)相符,分析完畢。
想一想:為什么7種不同的結(jié)果對(duì)應(yīng)7個(gè)不同的數(shù)字?
定義:
左移運(yùn)算符 (<<) 將第一個(gè)操作數(shù)向左移動(dòng)第二個(gè)操作數(shù)指定的位數(shù)。第二個(gè)操作數(shù)的類(lèi)型必須是 int。
右移運(yùn)算符 (>>) 將第一個(gè)操作數(shù)向右移動(dòng)第二個(gè)操作數(shù)所指定的位數(shù)。
#include
using namespace std;
int main(void)
{
int a;
cout <<"please input a number:\n";
cin >>a;
int c1 = a%3 ==0;//%整除符號(hào),結(jié)果為余數(shù),比如%3,結(jié)果是。
int c2 = a%5 ==0;//==判斷式子左邊的值是否和右邊的值相等,相等結(jié)果為true,反之,為flase
int c3 = a%7 ==0;
switch((c1<<2)+(c2<<1)+c3){
case 0: cout <<"不能被,5,7整除.\n"; break;
case 1: cout <<"只能被整除.\n"; break;
case 2: cout <<"只能被整除.\n"; break;
case 3: cout <<"可以被,7整除.\n"; break;
case 4: cout <<"只能被3整除.\n"; break;
case 5: cout <<"可以被,7整除.\n"; break;
case 6: cout <<"可以被,5整除.\n"; break;
case 7: cout <<"可以被,5,7整除.\n"; break;
}
}
考試大提示: 看上面一段代碼,我們假設(shè)輸入a的值為9,下面考試大提示: 分步驟分析它的過(guò)程。
1. int c1 = a%3 ==0;
int c2 = a%5 ==0;
int c3 = a%7 ==0;
執(zhí)行這三句,結(jié)果分別為c1=1,c2=0,c3=0。
2. (c1<<2)+(c2<<1)+c3
最核心的部分了,由上面我們可以知道c1=1。所以c1<<2的意思就是將c1的二進(jìn)制值左移兩位,1的二進(jìn)制是1,左移兩位是100,轉(zhuǎn)換為10進(jìn)制為4;由于c2,c3都為0,所以移位后也為0。所以這個(gè)表達(dá)式最后的值為4.
3. 4即為輸出“只能被3整除?!迸c事實(shí)相符,分析完畢。
想一想:為什么7種不同的結(jié)果對(duì)應(yīng)7個(gè)不同的數(shù)字?

