C語言4 運算符

目錄

1. 算術運算符

2. 關系運算符

3. 邏輯運算符

4. 位運算符

5. 賦值運算符

6. 自增和自減運算符

7. 條件運算符(三元運算符)

8. 逗號運算符

9. sizeof 運算符

10. 取地址和解引用運算符

11.運算符的優先級


1. 算術運算符

`+` (加法):將兩個數相加。
`-` (減法):將第一個數減去第二個數。
`*` (乘法):將兩個數相乘。
`/` (除法):將第一個數除以第二個數,注意在整型除法中結果也是整型(小數部分被舍棄)。
`%` (取模):返回兩個數相除的余數,只能用于整數。

示例

int a = 10, b = 3;
int sum = a + b;      // sum = 13
int difference = a - b; // difference = 7
int product = a * b;    // product = 30
int quotient = a / b;   // quotient = 3
int remainder = a % b;  // remainder = 1

2. 關系運算符

`==` (等于):比較兩個值是否相等。
`!=` (不等于):比較兩個值是否不相等。
`>` (大于):檢查第一個值是否大于第二個值。
`<` (小于):檢查第一個值是否小于第二個值。
`>=` (大于等于):檢查第一個值是否大于或等于第二個值。
`<=` (小于等于):檢查第一個值是否小于或等于第二個值。
示例

int a = 10, b = 20;
int result;result = (a == b);    // result = 0 (false)
result = (a != b);    // result = 1 (true)
result = (a > b);     // result = 0 (false)
result = (a < b);     // result = 1 (true)
result = (a >= b);    // result = 0 (false)
result = (a <= b);    // result = 1 (true)

3. 邏輯運算符

`&&` (邏輯與):如果兩個操作數都為真,則條件為真。
`||` (邏輯或):如果兩個操作數有一個為真,則條件為真。
`!` (邏輯非):反轉操作數的邏輯狀態。

示例

int a = 1, b = 0;
int result;result = (a && b);    // result = 0 (false)
result = (a || b);    // result = 1 (true)
result = !a;          // result = 0 (false)

4. 位運算符

`&` (按位與):對兩個數的每一位執行與操作。
`|` (按位或):對兩個數的每一位執行或操作。
`^` (按位異或):對兩個數的每一位執行異或操作。
`~` (按位取反):對數的每一位執行取反操作。
`<<` (左移):將一個數的所有位向左移動指定的位數。
`>>` (右移):將一個數的所有位向右移動指定的位數。

示例

int a = 5, b = 3;
int result;result = a & b;   // result = 1 (0101 & 0011 = 0001)
result = a | b;   // result = 7 (0101 | 0011 = 0111)
result = a ^ b;   // result = 6 (0101 ^ 0011 = 0110)
result = ~a;      // result = -6 (~00000101 = 11111010)
result = a << 1;  // result = 10 (0101 << 1 = 1010)
result = a >> 1;  // result = 2 (0101 >> 1 = 0010)

5. 賦值運算符

`=` (賦值):將右邊的值賦給左邊的變量。
`+=` (加且賦值):將右邊的值與左邊的變量相加并賦值給左邊的變量。
`-=` (減且賦值):將右邊的值與左邊的變量相減并賦值給左邊的變量。
`*=` (乘且賦值):將右邊的值與左邊的變量相乘并賦值給左邊的變量。
`/=` (除且賦值):將右邊的值與左邊的變量相除并賦值給左邊的變量。
`%=` (取模且賦值):將右邊的值與左邊的變量取模并賦值給左邊的變量。

示例

int a = 10;
a += 5;  // a = 15
a -= 3;  // a = 12
a *= 2;  // a = 24
a /= 4;  // a = 6
a %= 4;  // a = 2

6. 自增和自減運算符

`++` (自增):將操作數的值增加1。例如 `a++` 或 `++a`。
`--` (自減):將操作數的值減少1。例如 `a--` 或 `--a`。

?示例

int a = 5;
a++;  // a 現在是 6
++a;  // a 現在是 7
a--;  // a 現在是 6
--a;  // a 現在是 5

7. 條件運算符(三元運算符)

`?:` (條件運算符):根據條件表達式的真假值來選擇執行兩個表達式之一。

?示例

int a = 10, b = 20;
int result;result = (a > b) ? a : b;  // result = 20

8. 逗號運算符

`,` (逗號運算符):按順序執行一系列操作,并返回最后一個操作的值。

示例

int a = 1, b = 2, c;
c = (a += 1, b += 2, a + b);  // c = 6 (a=2, b=4)

9. sizeof 運算符

`sizeof`:返回變量或數據類型的大小(以字節為單位)。

示例

int a = 10;
printf("Size of a: %lu\n", sizeof(a));       // 輸出變量 a 的大小
printf("Size of int: %lu\n", sizeof(int));   // 輸出數據類型 int 的大小

10. 取地址和解引用運算符

?`&` (取地址):返回變量的地址。
?`*` (解引用):訪問指針所指向的地址的值。

示例

int a = 10;
int *p;
p = &a;     // p 現在是變量 a 的地址
int b = *p; // b 現在是變量 a 的值,即 10

11.運算符的優先級

在C語言中,運算符的優先級決定了表達式中各個運算符操作的順序。下面是常見運算符按優先級從高到低排列的列表:

1. 逗號運算符
2. 賦值運算符?(`=`, `+=`, `-=` 等)
3. 條件運算符?(`?:`)
4. 邏輯或運算符?(`||`)
5. 邏輯與運算符?(`&&`)
6. 按位或運算符?(`|`)
7. 按位異或運算符?(`^`)
8. 按位與運算符?(`&`)
9. 相等性和關系運算符 (`==`, `!=`, `<`, `>`, `<=`, `>=`)
10. 移位運算符?(`<<`, `>>`)
11. 加法和減法運算符 (`+`, `-`)
12. 乘法、除法和取模運算符 (`*`, `/`, `%`)
13. 一元運算符 (如 `++`, `--`, `!`, `~`, `+`, `-`)
14. 解引用和取地址運算符 (`*`, `&`)
15. sizeof運算符

優先級較高的運算符會先于優先級較低的運算符進行計算。在表達式中,可以使用圓括號 `()` 來改變運算符的計算順序,圓括號中的表達式會先于外部的運算符進行計算。

例如,考慮以下表達式:

int a = 10, b = 5, c = 3;
int result = a + b * c;

根據運算符的優先級,乘法運算符 `*` 比加法運算符 `+` 的優先級高,因此先計算乘法,然后再進行加法運算。如果想先計算加法,可以使用圓括號來改變優先級:

int result = (a + b) * c;

這樣就會先計算加法,然后再乘以 `c`。理解和正確利用運算符的優先級是編寫正確和高效C語言程序的重要基礎之一。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41584.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41584.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41584.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CRT工具

CRT工具 傳輸位置設置 打開SFTP alt p 命令 ls&#xff1a;遠程機器當前目錄內容 lls&#xff1a;傳輸位置文件的目錄內容 pwd&#xff1a;遠程機器的當前位置 lpwd&#xff1a;傳輸位置的位置 get 文件&#xff1a;ftp傳輸文件 get -r 文件夾&#xff1a;ftp傳輸文件…

如何獲取歌曲id---cloudmusic

X-Requested-With:“XMLHttpRequest”: https://blog.csdn.net/muzico425/article/details/102735413 https://www.runoob.com/xml/xml-http.html https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest 通過該案例主要還是學習一下X-Requested-With:"XMLHtt…

大華DSS user_toLoginPage.action命令執行漏洞

免責聲明 本文章僅做網絡安全技術研究使用&#xff01;嚴禁用于非法犯罪行為&#xff0c;請嚴格遵守國家法律法規&#xff1b;請勿利用文章內的相關技術從事非法測試&#xff0c;如因此產生的一切不良后果與文章作者無關。使用本文所提供的信息或工具即視為同意本免責聲明&…

go語言day11 錯誤 defer(),panic(),recover()

錯誤&#xff1a; 創建錯誤 1&#xff09;fmt包下提供的方法 fmt.Errorf(" 格式化字符串信息 " &#xff0c; 空接口類型對象 ) 2&#xff09;errors包下提供的方法 errors.New(" 字符串信息 ") 創建自定義錯誤 需要實現error接口&#xff0c;而error接口…

JavaSe系列二十七: Java正則表達式

正則表達式 為什么要學習正則表達式再提幾個問題解決之道-正則表達式正則表達式基本介紹介紹 正則表達式底層實現實例分析 正則表達式語法基本介紹元字符-轉義號 \\\\元字符-字符匹配符元字符-選擇匹配符元字符-限定符元字符-定位符分組非貪婪匹配 應用實例對字符串進行如下驗證…

學習筆記——動態路由——OSPF聚合(匯總)

十一、OSPF聚合(匯總) 1、路由聚合(匯總) 路由匯總是一種重要的思想&#xff0c;在大型的項目中是必須考慮的一個重點事項。隨著網絡的規模越來越大&#xff0c;網絡中的設備所需維護的路由表項也就會越來越多&#xff0c;路由表的規模也就會逐漸變大&#xff0c;而路由表是需…

React中的useMemo和memo

引言 React是一個聲明式的JavaScript庫&#xff0c;用于構建用戶界面。在開發過程中&#xff0c;性能優化是一個重要的方面。useMemo和memo是React提供的工具&#xff0c;用于幫助開發者避免不必要的渲染和計算&#xff0c;從而提升應用性能。 問題背景 在React應用中&#…

實現antd designable平臺的組件拖拽功能

平臺&#xff1a;designable設計器 github&#xff1a;designable 目錄 1 背景2 技術棧3 組件拖拽和放置3.1 類型定義3.2 拖拽3.3 放置 1 背景 由于業務需求&#xff0c;我們需要實現designable平臺的一個簡易版的組件拖拽功能。 #mermaid-svg-QrxSDGe9YyGG3LbQ {font-family:…

【Unity2D 2022:UI】制作角色血條

一、創建血底UI 1. 創建畫布&#xff08;Canvas&#xff09; 2. 在畫布上添加血底圖像&#xff08;Image&#xff09;子物體 二、編輯血底UI 1. 將血底圖片拖入源圖像&#xff08;Source Image&#xff09;中 2. 點擊設置為圖片的原大小&#xff08;Set Native Size&#x…

設計一個會員卡系統

會員卡系統在現代商業環境中是一個重要的客戶關系管理工具。通過會員卡系統&#xff0c;企業可以有效地增加客戶粘性&#xff0c;提高客戶滿意度&#xff0c;進而提升銷售額。本文將詳細討論如何設計一個全面的會員卡系統&#xff0c;包括會員卡的類型、權益設計、續費規則、升…

Java | Leetcode Java題解之第219題存在重復元素II

題目&#xff1a; 題解&#xff1a; class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {Set<Integer> set new HashSet<Integer>();int length nums.length;for (int i 0; i < length; i) {if (i > k) {set.remove(nums[i - …

# 三 JS的流程控制和函數

三 JS的流程控制和函數 3.1 JS分支結構 if結構 這里的if結構幾乎和JAVA中的一樣,需要注意的是 if()中的非空字符串會被認為是trueif()中的非零數字會被認為是true 代碼 if(false){// 非空字符串 if判斷為trueconsole.log(true) }else{console.log(false) } if(){// 長度為0…

GitHub詳解:代碼托管與協作開發平臺

文章目錄 一、GitHub簡介二、GitHub的核心功能2.1 倉庫&#xff08;Repository&#xff09;2.2 版本控制與分支&#xff08;Branch&#xff09;2.3 Pull Request2.4 Issues與Projects2.5 GitHub Actions 三、GitHub的使用方法3.1 注冊與登錄3.2 創建和管理倉庫3.3 使用Git進行代…

【密碼學】密碼學中的四種攻擊方式和兩種攻擊手段

在密碼學中&#xff0c;攻擊方式通常指的是密碼分析者試圖破解加密信息或繞過安全機制的各種策略。根據密碼分析者對明文、密文以及加密算法的知識程度&#xff0c;攻擊可以分為以下四種基本類型&#xff1a; 一、四種攻擊的定義 &#xff08;1&#xff09;唯密文攻擊(COA, C…

PCIe驅動開發(2)— 第一個簡單驅動編寫和測試

PCIe驅動開發&#xff08;2&#xff09;— 第一個簡單驅動編寫和測試 一、前言 教程參考&#xff1a;02_實戰部分_PCIE設備測試 教程參考&#xff1a;03_PCIe設備驅動源碼解析 二、驅動編寫 新建hello_pcie.c文件 touch hello_pcie.c然后編寫內容如下所示&#xff1a; #i…

【持續集成_03課_Jenkins生成Allure報告及Sonar靜態掃描】

1、 一、構建之后的配置 1、安裝allure插件 安裝好之后&#xff0c;可以在這里搜到已經安裝的 2、配置allure的allure-commandline 正常配置&#xff0c;是要么在工具里配置&#xff0c;要么在系統里配置 allure-commandline是在工具里進行配置 兩種方式進行配置 1&#xff…

原生JavaScript實現錄屏功能

1. 前言 使用JavaScript實現瀏覽器中打開系統錄屏功能 示例圖: 2. 源碼 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><…

LabVIEW機器視覺系統中的圖像畸變、校準和矯正

在機器視覺應用中&#xff0c;圖像畸變、校準和矯正是確保圖像準確性的關鍵步驟。LabVIEW作為一種強大的圖像處理和分析工具&#xff0c;提供了一系列功能來處理這些問題。以下是對圖像畸變、校準和矯正的詳細介紹。 圖像畸變 圖像畸變 是指由于攝像鏡頭的光學特性或拍攝角度問…

算法重新刷題

基礎算法 前綴和 一維前綴和 [USACO16JAN] Subsequences Summing to Sevens S - 洛谷 這一題主要是需要結合數學知識來求解&#xff0c; #include <iostream> #include <cstring> #include <cstdio> #include <algorithm>using namespace std;con…

06pymysql

【一】pymysql 1.我們可以利用pymysql在python中操作數據庫 原理是pyMySQL-->是封裝好的執行subprocess鏈接數據庫執行數據庫命令的模塊 官網&#xff1a;https://zetcode.com/python/pymysql/ 【二】使用示例 import pymysql from pymysql.cursors import DictCursor ?…