運算子相信大家在入門學無論哪門語言的時候都聽到過,它們可以對資料進行運算、賦值等操作,是入門必學的知識之一
/1.運算子的分類/
運算子有許多種類,如按功能分:
1.算術運算子 進行運算:+ - * / %
2.賦值運算子(復合運算子) 進行賦值:= += -= *= /= %=
3.邏輯運算子 進行判斷:&& || !
4.按位運算子(binary) 進行改變:<< >> ^ ~ & |
5.比較運算子 進行判斷:< > ==
當然,還可以有其它分法,如按運算元數量分:
1.單目運算子 有乙個運算元:~ !
2.雙目運算子 有兩個運算元:+ - * / = > >> || ^等
3.三目運算子 有三個運算元:?:
/2.復合運算子和邏輯運算子/
上面一定有許多「熟面孔」吧!今日,我就來挑些不常用在python裡的運算子,第乙個登場的是——復合運算子!
復合運算子集結了算術運算子和賦值運算子兩大運算子,復合運算子的家庭成員如下:
+= -= *= /= %= <<= >>= ^= ...
如+=它對應:
a += 10;//same -> a = a+10;
-=和他對應:
a -= 10;//same -> a = a-10;
邏輯運算子為!(非),&&(與),||(或),在python中,他們對應not,and,or。注意,這三個運算子的優先順序順序是!>&&>||。
/3.自增自減運算子/
這些運算子都是單目運算子,他們非常簡單:
a++;//same -> a = a+1;a--;//same -> a= a-1;
這++和--可以放前面(字首),也可以放後面(字尾),區別是,字首在呼叫前加減,字尾在呼叫後加減:
int a = 10;int b = a++; //a此刻等於11int c = ++a;cout 12,10,12
注意:自增自減運算子在python中沒有意義!
/4.按位運算子/
這是乙個非常複雜的種類,要了解他需要首先了解二進位制:
二進位制(binary)在數學和數位電路中指以2為基數的記數系統,以2為基數代表系統是二進位制的。現代的計算機和依賴計算機的裝置裡都用到二進位制。每個數字稱為乙個位元(bit,binary digit的縮寫)。
按位運算子就是對二進位制位逐位操作。
我們今天來認識幾個基本的位運算子:左移、右移、按位邏輯運算子。
左移(<
// 左移: // 60(d) = 111100(b) // 111100 左移三位 // <<< // 111100___ 空位用0填充: // 111100000 // // 正整數左移變大2的n次方倍(n為左移位數),溢位除外 。 cout << "60左移三位:" << (m << 3) << endl;
右移(>>)其實也一樣:
// 右移: // 60(d) = 111100(b) // 111100 右移三位 // >>> // ___111100 空位用0填充,溢位的丟棄: // 000111 // // 正整數右移縮小2的n次方倍(n為右移位數),溢位除外 。 cout << "m右移三位:" << (m >> 3) << endl << endl;
接下來就是「按位邏輯運算子」啦!它們其實與一般的邏輯運算子沒啥區別,只不過他們是對bit進行操作,而邏輯運算子是對int進行操作。
按位與——&:
//按位與: //60(d) = 111100(b) //13(d) = 001101(b); // &---------- // 001100(b) cout
按位或——|:
//按位或:// 60(d) = 111100(b)// 13(d) = 001101(b)// |----------// 111101(b) cout
按位異或——^:
//按位異或:// 60(d) = 111100(b) // 13(d) = 001101(b) // ^---------- // 110001(b) cout << "m異或n:" << (m^n) << endl;
如果兩個二進位制位上b不同,則新的二進位制為一,否則為零。
今天你學廢了嗎
C語言裡的for
for迴圈感覺是比較有技術含量的乙個知識點,很容易繞暈過去,特別是for迴圈的巢狀語句,總是有種不知道應該怎麼往下看的無措感。但是for迴圈其實還有點意思,特別是在我用它能輸出菱形之後,越發覺得好神奇。首先總結for的知識點 格式如下 for 表示式1 表示式2 表示式3 語句表示式1 賦初值,只執...
C語言巨集裡 的用法
c 和c 中的巨集 macro 屬於編譯器預處理的範疇,屬於編譯期概念 而非執行期概念 下面對常遇到的巨集的使用問題做了簡單總結。關於 和 define warn if exp do while 0 那麼實際使用中會出現下面所示的替換過程 warn if divider 0 被替換為 do whil...
c語言裡NULL的理解
null一看名字就知道為空,什麼為空呢,而且全是大寫。是不是意味著是個巨集定義呢?如果想到這裡,我相信你離真理不遠了。有些人為什麼犯錯?因為只看到了null這四個字母而已,沒有看到事物的本質,老師在課堂上也只是說空指標,空字串。這樣只會陷入無止境的誤區。如果我這樣定義 define null 0 你...