C++入門程式設計----C++運算子(8)

ZJJZDH發表於2024-03-07

什麼是運算子
運算子是讓程式執行特定的數學或邏輯操作的符號,用來表示針對資料的特定操作,也稱之為運算子。C++運算子分別有算術運算子、關係運算子、邏輯運算子、賦值運算子、位運算子、移位運算子、sizeof運算子、三目運算子、逗號運算子和域解析運算子。
算術運算子
C++中的算術運算子用於進行數學運算,包括加法、減法、乘法、除法和取模等。以下是C++算術運算子的介紹和使用:

  1. 加法運算子(+) :用於將兩個數值相加,或者將一個數值與一個字串連線起來。例如:
點選檢視程式碼
#include <iostream>

int main() {
    int a = 5;
    int  b = 3;
    int sum = a + b;  // 8
    std::cout << sum;
}
2. 減法運算子(-) :用於從一個數值中減去另一個數值。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 10;
    int b = 2;
    int d = a - b; // 8
    std::cout << d;

}
3. 乘法運算子(*) :用於將兩個陣列相乘。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    int b = 3;
    int product = a * b; // 15
    std::cout << product;
}
4. 除法運算子(/):用於將一個陣列除以另一個數值。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 10;
    int b = 3;
    int quotient = a / b; // 3
    std::cout << quotient;
}
注意,上述示例,因為計算結果的變數是整型,所以除法運算子會擷取整數部分,小數部分會被忽略。如果需要保留小數部分,計算結果的變數可以使用浮點數型別。 5. 取模運算子(%):用於計算兩個整數相除的餘數。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 10;
    int b = 3;
    int c = a % b;  // 1
    std::cout<< c;

}
6. 一元加運算子(+):用於將數值增加1。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    a++;  // a的值變為6
    std::cout << a << std::endl ;
    /*++a;   //  7

    std::cout << a ;*/
}
7. 一元減運算子(-):用於將數值減少1。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    a--;   // 先自減再賦值,a變為4
    std::cout << a << std::endl;
    /*--a;  // 先賦值再自減,a的值變為3
    std::cout << a;*/
}
**關係運算子** C++的關係運算子用於比較兩個值之間的關係,如等於、不等於、大於、小於等。以下是C++關係運算子的介紹和使用: 1. 等於運算子(==):用於判斷兩個值是否相等。例如:
點選檢視程式碼
int main()
{
    int a = 5;
    int b = 5;
    if(a == b)
    {
        // 如果a等於b,則執行這裡的程式碼
        std::cout << "相等";
    }
}
2. 不等於運算子(!=) :用於判斷兩個值是否不相等。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    int b = 3;
    if(a != b)
    {
        // 如果a不等於b,則執行這裡的程式碼
        std::cout << "不相等";
    }
}
3. 大於運算子(>) :用於判斷一個值是否大於另一個值。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    int b = 3;
    if(a > b)
    {
        // 如果a大於b,則執行這裡的程式碼
        std::cout << "a大於b";
    }
}
4. 小於運算子(<) :用於判斷一個值是否小於另一個值。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 3;
    int b = 5;
    if(a < b)
    {
        // 如果a小於b,則執行這裡的程式碼
        std::cout << "a小於b";
    }
}
5. 大於等於運算子(>=) :用於判斷一個值是否大於或等於另一個值。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    int b = 3;
    if(a >= b)
    {
        // 如果a大於或等於b,則執行這裡的程式碼
        std::cout << "a大於或等於b";
    }

}
6. 小於等於運算子(<=):用於判斷一個值是否小於或等於另外一個值。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 3;
    int b = 5;
    if(a < b)
    {
        // 如果a 小於或等於b,則執行這裡的程式碼
        std::cout << "a小於或等於b";
    }
}
**邏輯運算子** C++的邏輯運算子用於對布林值進行邏輯運算,包括邏輯與(&&)、邏輯或(||)、邏輯非(!)。下面是邏輯運算子的介紹和使用: 1. 邏輯與運算子(&&) :用於判斷兩個布林值是否都為真。例如:
點選檢視程式碼
#include  <iostream>
int main()
{
    bool a = true;
    bool b = true;
    if(a && b)
    {
        // 如果a和b都為真,則執行這裡的程式碼
        std::cout <<  "a和b都為真";
    }
}
2. 邏輯或運算子(||):用於判斷兩個布林值是否有一個為真。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    bool a = true;
    bool b = false;
    if(a || b)
    {
        // 如果a或b有一個為真,則執行這裡的程式碼
        std::cout << "a或b有一個為真";
    }
}
3. 邏輯非運算子(!) :用於對一個布林值進行取反操作。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    bool a = false;
    if (!a)
    {
        // 如果a為真,則執行這裡的程式碼
        std::cout << "將a取反等於真";
    }
}
由於邏輯運算子的優先順序低於算術運算子和關係運算子,但高於賦值運算子。因此,在複雜的表示式中,可以使用括號來明確指定運算順序。 例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    int b = 3;
    int c = 2;
    // 使用括號明確運算順序,先計算加法再計算關係運算,最後進行邏輯與運算
    int sum = (a + b) && (b > c);  // 1
    if(sum)
    {
        // 如果sum為真,則執行這裡的程式碼
        std:: cout << sum;
    }
}
**賦值運算子** 1. 賦值運算子(=) :用於將一個值賦給一個變數。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5; // 將5賦值給變數a
    std::cout << a;
}
2. 加等賦值運算子(+=) :用於將一個值加到一個變數上,並將結果賦值給該變數。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    a += 3; // 將3加到a上,並將結果賦值給a  5 + 3 = 8
    std::cout << a;
}
3. 減等賦值運算子(-=):用於從一個變數中減小一個值,並將結果賦值給該變數。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 10;
    a  -= 3; // 從a中減去3,並將結果7賦值給a;
    std::cout << a;
}
4. 乘等賦值運算子(*=) :用於將一個變數的值乘以一個值,並將結果賦值給該變數。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    a *= 3;     // 將a的值乘以3,並將結果15賦值給a
    std::cout << a;
}
5. 除等賦值運算子(/=):用於將一個變數的值除以一個值,並將結果賦值給該變數。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 10;
    a /= 3;  // 將a的值除以3,並將結果3賦值給a
    std::cout << a;

}
6. 取模等賦值運算子 (%=) :用於計算兩個值的餘數,並將結果賦值給一個變數。例如:
點選檢視程式碼
#include  <iostream>
int main()
{
    int a = 10;
    a %= 3;  // 將a的值除以3的餘數1賦值給a
    std::cout << a;
}
**位運算子** C++的位運算子用於對二進位制位進行操作。以下是C++位運算子的介紹和使用: 1. 位與運算子(&):用於對兩個二進位制數進行按位與操作。只有當兩個相應的二進位制位都為1時,結果的相應位才為1。例如:
點選檢視程式碼
#include  <iostream>
int main()
{
    int a = 60;  // 二進位制表示為  0010  1100
    int b = 13;  // 二進位制表示為  0000  1101
    int c = a & b; // 結果為0000 1100,即十進位制中的12
    std::cout << c;

}
2. 位或運算子(|):用於對兩個二進位制數進行按位或操作。只要兩個相應的二進位制位中有一個為1,結果的相應位就為1。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 60;  // 二進位制表示為0010  1100
    int b = 13;  // 二進位制表示為0000 1101
    int c = a | b; // 結果為0010 1101,即十進位制中的61
    std::cout << c;
}
3. 位異或運算子(^) :用於對兩個二進位制數進行按位異或操作。當兩個相應的二進位制位不同時,結果的相應位為1。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 60;  // 二進位制表示為0010  1100
    int b = 13;  // 二進位制表示為0000 1101
    int c = a ^ b; // 結果為0010 0001,即十進位制中的49
    std::cout << c;
}
4. 位非運算子(~):用於對一個二進位制數進行按位非操作。當相應的二進位制位為1時,結果的相應位為0;當相應的二進位制位為0時,結果的相應位為1。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 60;  // 二進位制表示為0010  1100
    int b = ~a;  // 二進位制表示為1101  0011,即十進位制中的-61
    std::cout << b;
}
tips:由於位運算子對整數進行低階操作,因此它們經常用於最佳化效能,特別是在處理網路資料、硬體程式設計和圖形處理等場景。 **移位運算子** C++中的移位運算子用於對二進位制進行左移和右移操作。以下是C++移位運算子的介紹和使用: 1. 左移運算子(<<):用於將一個整數的二進位制位向左移動指定的位數。 在左移操作中,左側的空位將用0來填充。例如:
點選檢視程式碼
#include  <iostream>
int main()
{
    int a = 5;  // 二進位制表示為0000 0101
    // 向左移動2位
    int b = a << 2; // 結果為0001  0100,即十進位制中的20
    std::cout << b; 
}
2. 右移運算子(>>):用於將一個整數的二進位制位向右移動指定的位數。 在右移操作中,左側的空位將根據該數的符合來填充。對於有符合整數,C++採用算術右移,即將最高位(符號位)複製到左側的空位中。對於無符合整數,左側的空位將用0來填充。例如:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 20; // 二進位制數表示為0010  0100
    // 向右移動2位
    int b = a >> 2;  // 結果為0000  0101 // 即十進位制中的5
    std::cout << b;
}
tips:使用移位運算子時需要注意資料型別的位數,確保在進行移位操作時不會導致資料溢位或丟失。移位運算子常用於效能敏感的程式碼中,如低階程式設計、圖形處理、加密等場景。 **sizeof運算子** sizeof是C++中非常有用的運算子,它用於獲取資料型別或物件在記憶體中所佔用的位元組數。以下是sizeof運算子的介紹和使用: 基本語法: sizeof(expression); 使用場景: 1. 獲取基本資料型別的大小:例如,sizeof(int) 可以返回int型別在記憶體中佔有的位元組數。 2. 獲取陣列的總大小:例如,sizeof(array)可以返回陣列的總位元組大小。 3. 獲取物件的大小:例如,sizeof(object)可以返回物件在記憶體中佔用的位元組數。 應用示例:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 5;
    int b[10];
    int *p = &a;
    std::cout << "Size of int:"<< sizeof(int) <<"bytes\n" ; // 通常是4位元組,具體取決於平臺
    std::cout << "Size of array:"<< sizeof(b) <<"bytes\n" ; // 返回整個陣列的大小,通常是40位元組。(假設int是4位元組)
    std::cout << "Size of pointer:"<< sizeof(p) <<"bytes\n" ; // 返回指標的大小,通常是8位元組 (假設64位系統)
    std::cout << "Size of object:"<< sizeof(a) <<"bytes\n" ; //返回物件的大小, 通常是4位元組(假設int是4位元組)
}
注意事項: 1. sizeof返回的是size_t型別,這是一種無符號整數型別。 2. sizeof不會計算動態分配的記憶體。例如,如果你使用new動態地分配了一個陣列,那麼sizeof將不會計算這部分記憶體。 3. 對於函式引數,sizeof返回的是引數的型別大小,而不是實際儲存在記憶體中的變數大小。例如,如果函式接受一個指標作為引數,那麼sizeof將返回指標的大小,而不是它所指向的資料大小。 **三目運算子** C++的三目運算子是一種簡結的if-else語句,用於根據條件選擇兩個值中的一個。它的語法如下: condition ? value_if_true : value_if_false; 語法的condition是一個布林表示式,如果它的值為true,則放回value_if_true的值;如果它的值為false,則返回value_if_false的值。示例程式碼如下:
點選檢視程式碼
#include <iostream>
int main()
{
    int x =  5;
    std::cout << (x > 0 ?  "x是正數" : "x不是正數")  << std::endl;
}
三目運算子可以用於任何需要選擇兩個值的情況,不僅僅是if-else語句,還可以使用它來設定變數的值,示例程式碼如下:
點選檢視程式碼
#include <iostream>
int main()
{
    int a = 10;
    int b = 12;
    int c = (a > b ?  a : b);
    // 輸出結果為12
    std::cout<< c;
}
**逗號運算子** 逗號運算子在C++中的特殊的運算子,它允許你在一個語句中執行多個操作,但只返回最後一個操作的結果。逗號運算子的語法如下: expression1,expression2,...,expressionN; 逗號運算子按照從左到右的順序依次執行每個表示式,並返回最後一個表示式的值。每個表示式可以是任何合法的C++ 表示式,包括變數賦值、函式呼叫等,示例程式碼如下:
點選檢視程式碼
#include  <iostream>
int main()
{
    // for迴圈中初始化多個變數
    for(int i = 0, j = 0; i < 10; i++,j--)
        {
            // do  something
        }
    // 執行多個操作
    int a = 5;
    int b = 10;
    int c = (a+=2,b--,a + b); // c的值為16
    std::cout << c;
}
**域解析運算子** C++中的域解析運算子(::) 用於指定類或名稱空間的成員。它可以用於訪問靜態成員、常量成員和非靜態成員。 域解析運算子的語法如下: class_name::member_name; 語法的class_name是類名,member_name是成員名。關於域解析運算子的使用,將會在類或名稱空間的內容再作詳細講述。

相關文章