C語言自學攻略-運算子

更新 發佈閱讀 5 分鐘

記憶體中的變數

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

vocus|新世代的創作平台
  • 上圖是假設整數變數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)

運算子的優先順序

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

vocus|新世代的創作平台
vocus|新世代的創作平台

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

留言
avatar-img
電資鼠 - 您的學習好夥伴
23會員
242內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/03/07
本章節將探討左下三角稀疏矩陣。
Thumbnail
2025/03/07
本章節將探討左下三角稀疏矩陣。
Thumbnail
2025/03/07
相信讀者現在對於鏈結串列有了更多的認識,所以我再進一步,示範更多關於鏈結串列的操作,這部分示範會將程式模組化。將鏈結串列的操作寫進一個標頭檔,並在主程式中引入。
Thumbnail
2025/03/07
相信讀者現在對於鏈結串列有了更多的認識,所以我再進一步,示範更多關於鏈結串列的操作,這部分示範會將程式模組化。將鏈結串列的操作寫進一個標頭檔,並在主程式中引入。
Thumbnail
2025/03/07
本章節示範透過「陣列索引」和「指標運算」兩種方式來存取同一個二維陣列 a,並印出相同的數值以及對應的位址,以說明它們其實指向的是同一塊連續的記憶體空間。本文將依序解釋各段程式碼,並示範可能的執行結果與背後原理。
Thumbnail
2025/03/07
本章節示範透過「陣列索引」和「指標運算」兩種方式來存取同一個二維陣列 a,並印出相同的數值以及對應的位址,以說明它們其實指向的是同一塊連續的記憶體空間。本文將依序解釋各段程式碼,並示範可能的執行結果與背後原理。
Thumbnail
看更多
你可能也想看
Thumbnail
了解這些運算子及其優先等級有助於更好地理解和編寫 JavaScript 代碼
Thumbnail
了解這些運算子及其優先等級有助於更好地理解和編寫 JavaScript 代碼
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本章節的目的是介紹Java中的運算符,包括算數運算符、比較運算符、賦值運算符、位元運算符以及運算符的優先等級。通過本章節,讀者可以了解到如何在Java中進行基本的數學運算、比較兩個值的大小、將值賦給變數、進行位元運算,以及在複雜表達式中如何正確地理解運算符的優先等級。
Thumbnail
本章節的目的是介紹Java中的運算符,包括算數運算符、比較運算符、賦值運算符、位元運算符以及運算符的優先等級。通過本章節,讀者可以了解到如何在Java中進行基本的數學運算、比較兩個值的大小、將值賦給變數、進行位元運算,以及在複雜表達式中如何正確地理解運算符的優先等級。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
此章節旨在介紹TypeScript中的運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子,以及他們的優先等級。每種運算子都以清晰的解釋和代碼範例進行詳細說明,幫助讀者理解並有效地在自己的程式碼中使用。
Thumbnail
此章節旨在介紹TypeScript中的運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子,以及他們的優先等級。每種運算子都以清晰的解釋和代碼範例進行詳細說明,幫助讀者理解並有效地在自己的程式碼中使用。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
本章節介紹了程式語言中的各種運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子,以及運算子的優先等級。每種運算子都有對應的範例程式碼和輸出結果,以幫助讀者更好地理解其用法和效果。此外,章節也強調了運算子的優先等級在程式設計中的重要性,並通過範例展示了不同優先等級的運算順序對運算結果的影響。
Thumbnail
本章節介紹了程式語言中的各種運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子,以及運算子的優先等級。每種運算子都有對應的範例程式碼和輸出結果,以幫助讀者更好地理解其用法和效果。此外,章節也強調了運算子的優先等級在程式設計中的重要性,並通過範例展示了不同優先等級的運算順序對運算結果的影響。
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
Thumbnail
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News