<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                #### 7. 運算符 運算符是一種告訴編譯器執行特定的數學或邏輯操作的符號。C 語言內置了豐富的運算符,并提供了以下類型的運算符: * 算術運算符 * 關系運算符 * 邏輯運算符 * 位運算符 * 賦值運算符 * 雜項運算符 **算術運算符** 下表顯示了 C 語言支持的所有算術運算符。假設變量 **A** 的值為 10,變量 **B** 的值為 20,則: | 運算符 | 描述 | 實例 | | --- | --- | --- | | + | 把兩個操作數相加 | A + B 將得到 30 | | \- | 從第一個操作數中減去第二個操作數 | A - B 將得到 -10 | | \* | 把兩個操作數相乘 | A \* B 將得到 200 | | / | 分子除以分母 | B / A 將得到 2 | | % | 取模運算符,整除后的余數 | B % A 將得到 0 | | ++ | 自增運算符,整數值增加 1 | A++ 將得到 11 | | \-- | 自減運算符,整數值減少 1 | A-- 將得到 9 | 例子: ~~~ void main(){ int a = 21; int b = 10; int c; c = a + b; printf("a + b = %d \n", c); c = a - b; printf("a - b = %d \n", c); c = a * b; printf("a * b = %d \n", c); c = a / b; printf("a / b = %d \n", c); c = a % b; printf("a % b = %d \n", c); c = ++a; printf("++a = %d , %d \n", c, a); c = b++; printf("b++ = %d , %d \n", c, b); c = b--; printf("b-- = %d \n", c); } ~~~ 輸出: ~~~ a + b = 31 a - b = 11 a * b = 210 a / b = 2 a b = 1 ++a = 22 , 22 b++ = 10 , 11 b-- = 11 ~~~ **關系運算符** 下表顯示了 C 語言支持的所有關系運算符。假設變量 **A** 的值為 10,變量 **B** 的值為 20,則: | 運算符 | 描述 | 實例 | | --- | --- | --- | | \== | 檢查兩個操作數的值是否相等,如果相等則條件為真。 | (A == B) 為假。 | | != | 檢查兩個操作數的值是否相等,如果不相等則條件為真。 | (A != B) 為真。 | | \> | 檢查左操作數的值是否大于右操作數的值,如果是則條件為真。 | (A > B) 為假。 | | < | 檢查左操作數的值是否小于右操作數的值,如果是則條件為真。 | (A < B) 為真。 | | \>= | 檢查左操作數的值是否大于或等于右操作數的值,如果是則條件為真。 | (A >= B) 為假。 | | <= | 檢查左操作數的值是否小于或等于右操作數的值,如果是則條件為真。 | (A <= B) 為真。 | **邏輯運算符** 下表顯示了 C 語言支持的所有關系邏輯運算符。假設變量 **A** 的值為 1,變量 **B** 的值為 0,則: ![](https://img.kancloud.cn/c8/36/c836bb98e99c791f308e06b6f1843204_656x258.png) ~~~ void main(){ int a1 = 5; int b1 = 5; int c1; //如果兩個操作數都非零,則條件為真。 if (a1 && b1) { printf("a1 && b1 %d \n", true); } else { printf("a1 && b1 %d \n", false); } //如果兩個操作數中有任意一個非零,則條件為真。 if (a1 || b1) { printf("a1 || b1 %d \n", true); } else { printf("a1 || b1 %d \n", false); } //改變 a1 b1 的值 a1 = 0; b1 = 10; //如果兩個操作數都非零,則條件為真。 if (a1 && b1) { printf("a1 && b1 %d \n", true); } else { printf("a1 && b1 %d \n", false); } if (!(a1 && b1)) { printf("!(a1 && b1) %d \n", true); } else { printf("a1 || b1 %d \n", false); } } ~~~ 輸出: ~~~ a1 && b1 1 a1 || b1 1 a1 && b1 0 !(a1 && b1) 1 ~~~ **位運算符** ![](https://img.kancloud.cn/3f/14/3f14739c6dab3abd2861fdd4d6ed8665_653x255.png) ~~~ void main(){ //位運算符 & | ^ ~ int wA = 60; //0011 1100 int wB = 13; //0000 1101 int wC = 10; //都為真,才是真 0000 1100 printf("wA & wB=?%d\n", wA & wB); //其中一個為真,就為真 0011 1101 printf("wA | wB=?%d\n", wA | wB); //一個為真則為真,2個為真這為假 00110001 printf("wA ^ wB=?%d\n", wA ^ wB); printf("~wB=?%d\n", ~wB); //二進制左移運算符 左 * 4 = 40 printf("wC<<2=?%d\n", wC << 2); //二進制右移運算符 右 / 4 printf("wC>>2=?%d\n", wC >> 2); } ~~~ 輸出 ~~~ wA & wB=?12 wA | wB=?61 wA ^ wB=?49 ~wB=?-14 wC<<2=?40 wC>>2=?2 ~~~ 下表顯示了 C 語言支持的位運算符。假設變量 **A** 的值為 60,變量 **B** 的值為 13,則: | 運算符 | 描述 | 實例 | | --- | --- | --- | | & | 按位與操作,按二進制位進行"與"運算。運算規則:`0&0=0; 0&1=0; 1&0=0; 1&1=1;` | (A & B) 將得到 12,即為 0000 1100 | | | | 按位或運算符,按二進制位進行"或"運算。運算規則:`0|0=0; 0|1=1; 1|0=1; 1|1=1;` | (A | B) 將得到 61,即為 0011 1101 | | ^ | 異或運算符,按二進制位進行"異或"運算。運算規則:`0^0=0; 0^1=1; 1^0=1; 1^1=0;` | (A ^ B) 將得到 49,即為 0011 0001 | | ~ | 取反運算符,按二進制位進行"取反"運算。運算規則:`~1=0; ~0=1;` | (~A ) 將得到 -61,即為 1100 0011,一個有符號二進制數的補碼形式。 | | << | 二進制左移運算符。將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。 | A << 2 將得到 240,即為 1111 0000 | | \>> | 二進制右移運算符。將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。 | A >> 2 將得到 15,即為 0000 1111 | **賦值運算符** 下表列出了 C 語言支持的賦值運算符: | 運算符 | 描述 | 實例 | | --- | --- | --- | | \= | 簡單的賦值運算符,把右邊操作數的值賦給左邊操作數 | C = A + B 將把 A + B 的值賦給 C | | += | 加且賦值運算符,把右邊操作數加上左邊操作數的結果賦值給左邊操作數 | C += A 相當于 C = C + A | | \-= | 減且賦值運算符,把左邊操作數減去右邊操作數的結果賦值給左邊操作數 | C -= A 相當于 C = C - A | | \*= | 乘且賦值運算符,把右邊操作數乘以左邊操作數的結果賦值給左邊操作數 | C \*= A 相當于 C = C \* A | | /= | 除且賦值運算符,把左邊操作數除以右邊操作數的結果賦值給左邊操作數 | C /= A 相當于 C = C / A | | %= | 求模且賦值運算符,求兩個操作數的模賦值給左邊操作數 | C %= A 相當于 C = C % A | | <<= | 左移且賦值運算符 | C <<= 2 等同于 C = C << 2 | | \>>= | 右移且賦值運算符 | C >>= 2 等同于 C = C >> 2 | | &= | 按位與且賦值運算符 | C &= 2 等同于 C = C & 2 | | ^= | 按位異或且賦值運算符 | C ^= 2 等同于 C = C ^ 2 | | |= | 按位或且賦值運算符 | C |= 2 等同于 C = C | 2 | 例子: ~~~ void main(){ int wAA = 21; int wBB; wBB = wAA; printf("= %d\n", wBB); wBB += wAA; printf("+= %d\n", wBB); wBB -= wAA; printf("-= %d\n", wBB); wBB *= wAA; printf("*= %d\n", wBB); wBB /= wAA; printf("/= %d\n", wBB); wBB %= wAA; printf("%= %d\n", wBB); wBB <<= wAA; printf("<<= %d\n", wBB); wBB <<= wAA; printf(">>= %d\n", wBB); wBB &= wAA; printf("&= %d\n", wBB); wBB ^= wAA; printf("^= %d\n", wBB); wBB |= wAA; printf("|= %d\n", wBB); } ~~~ 輸出: ~~~ = 21 += 42 -= 21 *= 441 /= 21 = 0 <<= 0 >>= 0 &= 0 ^= 21 |= 21 ~~~ **雜項運算符 sizeof、&、三元** 下表列出了 C 語言支持的其他一些重要的運算符,包括 **sizeof** 和 **? :**。 | 運算符 | 描述 | 實例 | | --- | --- | --- | | sizeof() | 返回變量的大小。 | sizeof(a) 將返回 4,其中 a 是整數。 | | & | 返回變量的地址。 | &a; 將給出變量的實際地址。 | | \* | 指向一個變量。 | \*a; 將指向一個變量。 | | ? : | 條件表達式 | 如果條件為真 ? 則值為 X : 否則值為 Y | 例子: ~~~ void main(){ int zxA = 4; short zxB; double zxC; int *ptr; //sizeOf 運算符實例 ,lu 32位無符號整數 printf("zxA sizeOf = %lu \n", sizeof(zxA)); printf("zxB sizeOf = %lu \n", sizeof(zxB)); printf("zxC sizeOf = %lu \n", sizeof(zxC)); //& 和 * 運算符實例 ptr = &zxA; //將 zxA 的地址值復制給 ptr 指針 printf("zxA 的值為:%d \n", zxA); printf("*ptr 的值為:%d \n", *ptr); //三元運算符 zxA = 10; zxB = (zxA == 1) ? 20 : 30; printf("zxb 的值為:%d \n", zxB); zxB = (zxA == 10) ? 20 : 30; printf("zxb 的值為:%d \n", zxB); } ~~~ 輸出: ~~~ zxA sizeOf = 4 zxB sizeOf = 2 zxC sizeOf = 8 zxA 的值為:4 *ptr 的值為:4 zxb 的值為:30 zxb 的值為:20 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看