C語言自學攻略-運算子

更新於 發佈於 閱讀時間約 5 分鐘

記憶體中的變數

當我們宣告了一個int整數的變數x並賦值為38,那它在記體中的樣子如下圖所示:

raw-image
  • 上圖是假設整數變數x是儲存於記憶體位址中的0x7ffda99fcbdc-0x7ffda99fcbdf
  • 總共32位元bits(4Bytes),符合我們的認知。
  • 10進位的數值會被轉換為電腦看得懂的2進位表示法。

現在我們知道變數在記體中的樣子了,我們接下來想要對變數做一些運算。

運算子

指定運算子

作用:用於將值指定給變數。

  • 常見運算子=, +=, =, =, /=, %=
  • 範例
int a = 10;   // 將 10 指定給 a
a += 5; // 相當於 a = a + 5 (結果: 15)

算數運算子

  • 作用:進行基本的數學運算。
  • 常見運算子+, -, *, /, %
  • 範例
int a = 10, b = 3;
int sum = a + b; // 加法 (結果: 13)
int mod = a % b; // 取餘數 (結果: 1)

遞增(減)運算子

  • 作用:使變數自增或自減 1。
  • 運算子++(遞增),--(遞減)
  • 範例
c
int n=0, a = 5;
n = (a++) + 10; // 後置遞增,會先計算a + 10, 再計算a = a + 1(結果: n=15, a=6)
n = (++a) + 10; // 前置遞增,會先計算a = a + 1, 再計算a + 10(結果: a=7, n=17)

關係運算子

  • 作用:比較兩個值,結果為布林值(truefalse)。
  • 常見運算子==, !=, <, >, <=, >=
  • 範例
int a = 5, b = 10;
if (a < b) { // 比較 (結果: true)
printf("a 小於 b\n");
}

邏輯運算子

  • 作用:進行邏輯運算,返回布林值。
  • 常見運算子&&(AND), ||(OR), !(NOT)
  • 範例
int a = 5, b = 10;
if (a > 0 && b > 0) { // AND 運算 (結果: true && true = true)
printf("a 和 b 都是正數\n");
}

位元運算子

  • 作用:對數值的二進制位元逐一進行位元運算。
  • 常見運算子&(AND), |(OR), ^(XOR), ~(NOT), <<(左移), >>(右移)
  • 範例
int a = 8, b = 2, c=0;
//把a的位元右移b個位元,並將移出的位元捨棄,空缺則補0,相當於a / 2的b次方, 結果為00000000 00000000 00000000 00000010,c=2
c = a>>b;
//把a的位元左移b個位元,並將移出的位元捨棄,空缺則補0,相當於a * 2的b次方, 結果為00000000 00000000 00000000 00100000,c=32
c = a<<b;
c = ~a; //把a的每一位元NOT,即將0變為1,1變為0,結果為11111111 11111111 11111111 11110111,最高位為負號,表示負數,我們對結果取2的補數就可以得到這個負數的數值,我們得到-(00000000 00000000 00000000 00001000+1),c=-9
c = a&b; //結果為: 00000000 00000000 00000000 00000000,c = 0
c = a|b; //結果為:00000000 00000000 00000000 00001010,c = 10
c = a^b; //結果為:00000000 00000000 00000000 00001010,c = 10

練習題

char x = 3;
x = ~x;
(a)//x取反向: 11111100
(b)//取2的補數: 得到-(00000100)
(c)//x = -4

char x = -3;
x = x >> 1;
(a)//-3以2的補數表示為11111101(00000011反相+1)
(b)//右移後得到11111110(注意,因為最高位為負號,這邊我們不補0,要補1)
(c)//取2的補數,得到-(00000010)
(d)//x = -2

條件運算子

  • 作用:根據條件選擇一個值(三元運算子)。
  • 格式條件 ? 真值 : 假值
  • 範例
int a = 5, b = 10;
int max = (a > b) ? a : b; // 若條件為真返回 a,否則返回 b (結果: max=10)

運算子的優先順序

在程式碼中,優先級較高,意味著它們會先被執行

raw-image
raw-image

一樣不用死記硬背,但有時候優先級的高低可能會影響輸出結果,所以大概了解一些優先級大概在哪還是有其必要性,不過忘記回來查就好了。

在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
留言
avatar-img
留言分享你的想法!

































































本文章介紹了 C 語言putchar, getchar, puts, fgets函數及其使用方法與常見問題解決方案。包含程式碼範例、問題分析及解決方法,幫助讀者理解並避免輸入錯誤。
在C語言中,scanf()可能並沒有我們所想的那麼簡單且單調,本章節會列出4點補充的使用方式。這些都是容易忽視的小知識。
本章將介紹 C 語言的輸入與輸出 ,透過本章系統性的學習與使用示範,你將能夠靈活掌握 C 語言的資料讀取與輸出技巧。
本章將介紹 C 語言中的變數與常數,這是學習 C 語言的基礎概念,決定了 數據儲存、運算與管理方式。我們將學習如何 宣告變數與常數,並透過一個 實際範例 來開始撰寫C語言。
本文章介紹了 C 語言putchar, getchar, puts, fgets函數及其使用方法與常見問題解決方案。包含程式碼範例、問題分析及解決方法,幫助讀者理解並避免輸入錯誤。
在C語言中,scanf()可能並沒有我們所想的那麼簡單且單調,本章節會列出4點補充的使用方式。這些都是容易忽視的小知識。
本章將介紹 C 語言的輸入與輸出 ,透過本章系統性的學習與使用示範,你將能夠靈活掌握 C 語言的資料讀取與輸出技巧。
本章將介紹 C 語言中的變數與常數,這是學習 C 語言的基礎概念,決定了 數據儲存、運算與管理方式。我們將學習如何 宣告變數與常數,並透過一個 實際範例 來開始撰寫C語言。
你可能也想看
Google News 追蹤
Thumbnail
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
本章節的目的是介紹Java中的運算符,包括算數運算符、比較運算符、賦值運算符、位元運算符以及運算符的優先等級。通過本章節,讀者可以了解到如何在Java中進行基本的數學運算、比較兩個值的大小、將值賦給變數、進行位元運算,以及在複雜表達式中如何正確地理解運算符的優先等級。
Thumbnail
本章節介紹了程式語言中的各種運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子,以及運算子的優先等級。每種運算子都有對應的範例程式碼和輸出結果,以幫助讀者更好地理解其用法和效果。此外,章節也強調了運算子的優先等級在程式設計中的重要性,並通過範例展示了不同優先等級的運算順序對運算結果的影響。
Thumbnail
此章節旨在介紹TypeScript中的運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子,以及他們的優先等級。每種運算子都以清晰的解釋和代碼範例進行詳細說明,幫助讀者理解並有效地在自己的程式碼中使用。
Thumbnail
了解這些運算子及其優先等級有助於更好地理解和編寫 JavaScript 代碼
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
電腦只做一件事情: 運算。 我們所看到的任何酷酷的應用: 不論是網頁動畫、遊戲特效、甚至是 AI 說的話,全部都 是由電腦的運算結果組合而成的。 首先我們來梳理一下各個名詞之間的關聯: 1. 運算分成兩個部分: 運算子 (運算的名稱,如: 加法) 和運算元 (運算的對象,如: 8)。運算就是對資
※ JavaScript的五種運算子: 我們希望操控這些值,來達成我們想要的結果。 運算式由運算元和運算子組成。運算元是指我們要拿去做運算的東西是什麼?例如:5和4。運算子是他要做什麼樣子的運算?例如:"+"。 算術運算子:"+加"、"-減"、"*乘"、"/除"、"%(mod餘數概念)"。
Thumbnail
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
本章節的目的是介紹Java中的運算符,包括算數運算符、比較運算符、賦值運算符、位元運算符以及運算符的優先等級。通過本章節,讀者可以了解到如何在Java中進行基本的數學運算、比較兩個值的大小、將值賦給變數、進行位元運算,以及在複雜表達式中如何正確地理解運算符的優先等級。
Thumbnail
本章節介紹了程式語言中的各種運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子,以及運算子的優先等級。每種運算子都有對應的範例程式碼和輸出結果,以幫助讀者更好地理解其用法和效果。此外,章節也強調了運算子的優先等級在程式設計中的重要性,並通過範例展示了不同優先等級的運算順序對運算結果的影響。
Thumbnail
此章節旨在介紹TypeScript中的運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子,以及他們的優先等級。每種運算子都以清晰的解釋和代碼範例進行詳細說明,幫助讀者理解並有效地在自己的程式碼中使用。
Thumbnail
了解這些運算子及其優先等級有助於更好地理解和編寫 JavaScript 代碼
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
電腦只做一件事情: 運算。 我們所看到的任何酷酷的應用: 不論是網頁動畫、遊戲特效、甚至是 AI 說的話,全部都 是由電腦的運算結果組合而成的。 首先我們來梳理一下各個名詞之間的關聯: 1. 運算分成兩個部分: 運算子 (運算的名稱,如: 加法) 和運算元 (運算的對象,如: 8)。運算就是對資
※ JavaScript的五種運算子: 我們希望操控這些值,來達成我們想要的結果。 運算式由運算元和運算子組成。運算元是指我們要拿去做運算的東西是什麼?例如:5和4。運算子是他要做什麼樣子的運算?例如:"+"。 算術運算子:"+加"、"-減"、"*乘"、"/除"、"%(mod餘數概念)"。