C語(yǔ)言入門篇--充分理解操作符
1.算術(shù)操作符
+ 加
- 減
* 乘
/ 除
% 取模
1.1除法運(yùn)算
除法運(yùn)算分母不可為零,否則程序會(huì)中斷報(bào)錯(cuò),所以要在程序中檢驗(yàn)分母是否為零。
1.2取模運(yùn)算
取模即取余數(shù)。
2.移位操作符
相關(guān)知識(shí)
>> 右移
<< 左移
1.移位運(yùn)算是站在二進(jìn)制角度移位的
eg:
#include <stdio.h> int main() { int x = 15; printf("%d\n", x>>1); printf("%d\n", x<<1); printf("%d\n", x); x = x >> 1; printf("%d\n", x); return 0; }
2.左移右移,原始變量值不發(fā)生變化除非給原始變量賦值
3.整數(shù)移位運(yùn)算不能整除時(shí),只保留整數(shù)部分
4.C語(yǔ)言中的移位運(yùn)算符
(如<<
、>>
)只能用于整型(如int
、short
、long
、char
等),不能用于浮點(diǎn)型(如double
、float
)
5.移位分為算術(shù)移左移、算術(shù)移右移和邏輯左移、邏輯右移
算術(shù)左移和算術(shù)右移主要用來(lái)進(jìn)行有符號(hào)數(shù)的倍增、減半;
邏輯左移和邏輯右移主要用來(lái)進(jìn)行無(wú)符號(hào)數(shù)的倍增、減半。
3.位操作符
位操作是站在二進(jìn)制角度進(jìn)行操作的。
& 按位與
| 按位或
^ 按位異或
3.1按位與&
eg:
參與按位與的兩二進(jìn)制位數(shù)都為真(1)結(jié)果為真,否則只要有一個(gè)為假(0)結(jié)果為假。
#include <stdio.h> int main() { printf("%d\n", 1 & 1); printf("%d\n", 0 & 1); printf("%d\n", 1 & 0); printf("%d\n", 0 & 0); printf("%d\n", 2 & 6); return 0; }
3.2按位或 |
參與按位與的兩二進(jìn)制位數(shù)只要有一個(gè)為真(1)結(jié)果為真,若都為假(0)結(jié)果為假。
eg:
#include <stdio.h> int main() { printf("%d\n", 1 | 1); printf("%d\n", 0 | 1); printf("%d\n", 1 | 0); printf("%d\n", 0 | 0); printf("%d\n", 2 | 6); return 0; }
3.3異或 ^
參與按位與的兩二進(jìn)制位數(shù)相同為假,不同為真。
eg:
#include <stdio.h> int main() { printf("%d\n", 1 ^ 1); printf("%d\n", 0 ^ 1); printf("%d\n", 1 ^ 0); printf("%d\n", 0 ^ 0); printf("%d\n", 2 ^ 6); return 0; }
4.賦值操作符
= += -= *= /= &= ^= |= >>= <<=
#include <stdio.h> int main() { int x1 = 0; x1 = 10;//賦值 從右向左賦值 printf("%d\n", x1); int x2 = 20; x2 += 10;//加等 等價(jià)于x=x+10; //其他操作符類似 printf("%d\n", x2); return 0; }
5.單目操作符
單目操作符即只有一個(gè)操作數(shù)的操作符。
! 邏輯反操作
- 負(fù)值
+ 正值
& 取地址
sizeof 操作數(shù)的類型長(zhǎng)度(以字節(jié)為單位)
~ 對(duì)一個(gè)數(shù)的二進(jìn)制按位取反
-- 前置、后置--
++ 前置、后置++
* 間接訪問(wèn)操作符(解引用操作符)
(類型) 強(qiáng)制類型轉(zhuǎn)換
5.1 邏輯反操作 !
邏輯真–>非0
邏輯假–>0
eg:
#include<stdio.h> int main() { int flag = 1; if (!flag)//(flag==1)條件為真即非零,取反(!)后if條件為假即0 { printf("if條件為真!\n"); } else { printf("if條件為假!\n"); } return 0; }
5.2 負(fù)值 - 正值 +
給數(shù)字前帶+ -變成對(duì)應(yīng)的正數(shù)或負(fù)數(shù)。
eg:
#include <stdio.h> #include <windows.h> int main() { int x1 = 10; printf("%d\n", +x1); printf("%d\n", -x1); int x2 = -10; printf("%d\n", +x2); printf("%d\n", -x2); return 0; }
5.3 取地址 &
每個(gè)變量在內(nèi)存中都有對(duì)應(yīng)的地址。
eg:
#include <stdio.h> int main() { int x = 10; printf("%d\n", x); printf("0x%p\n", &x);//%p:以十六進(jìn)制打印地址;加0x:為了打印出來(lái)的是變量所對(duì)應(yīng)的標(biāo)準(zhǔn)地址。 return 0; }
5.4 取反 ~
對(duì)一個(gè)數(shù)的二進(jìn)制按位取反。
eg:
#include <stdio.h> int main() { unsigned x = 1; printf("%u\n", x); printf("%u\n", ~x); return 0; }
5.5 前置、后置 ++ - -
++i :前置++,先自增再賦值使用。
i++ :后置++,先賦值使用再自增。
(- -同理)
eg:
#include <stdio.h> int main() { int i = 3; int a = i++; printf("%d\n", i); printf("%d\n", a); /// int j = 10; int b = ++j; printf("%d\n", j); printf("%d\n", b); return 0; }
5.6 解引用操作符 *
eg:關(guān)于解引用操作符 的理解以看變量的左值與右值。
#include <windows.h> int main() { int a = 10; int *p = &a;//指針p指向變量a int b=*p;//*p即解引用指針p,取出指針p所指地址空間里的值,然后賦給變量b printf("%d\n", b); return 0; }
5.7 強(qiáng)制類型轉(zhuǎn)換 (類型)
強(qiáng)制類型轉(zhuǎn)換是把變量從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。
強(qiáng)制類型轉(zhuǎn)換分為隱式轉(zhuǎn)換和顯示轉(zhuǎn)換。
eg:
#include <stdio.h> int main() { int a = 10; double b = 3.456; a = b;//隱式轉(zhuǎn)換 printf("%d\n", a); /// int c = 20; double d = 5.555; c = (int)d;//顯式轉(zhuǎn)換 printf("%d\n", c); return 0; }
6.關(guān)系操作符
關(guān)系操作符就是用來(lái)判斷大小關(guān)系。
>
>=
<
<=
!= 用于測(cè)試“不相等”
== 用于測(cè)試“相等”
7.邏輯操作符
&& 邏輯與
|| 邏輯或
&& 兩邊的表達(dá)式都為真,結(jié)果為真。
| | 兩邊的表達(dá)式只要有一個(gè)為真,結(jié)果為真。
注意:
&&和| |的判斷規(guī)則:
&& 若第一個(gè)表達(dá)式為假,結(jié)果為假,則不判斷第二個(gè)表達(dá)式。
| | 若第一個(gè)表達(dá)式為真,結(jié)果為真,則不判斷第二個(gè)表達(dá)式。
8.條件操作符
exp1 ? exp2 : exp3//又稱三目操作符,它是唯一有3個(gè)操作數(shù)的運(yùn)算符
若表達(dá)式exp1為真,則執(zhí)行exp2;
若表達(dá)式exp1為假,則執(zhí)行exp3;
9.逗號(hào)表達(dá)式
1.逗號(hào)表達(dá)式中的每個(gè)表達(dá)式都會(huì)執(zhí)行。
2.逗號(hào)表達(dá)式中的結(jié)果為最后一個(gè)表達(dá)式的值。
3.可以用()隔開(kāi)逗號(hào)表達(dá)式。
exp1, exp2, exp3, …expN
eg:
#include <stdio.h> int main() { int a = 10; int b = 20; int c = 0; int d = ((c=a+b), 2, 3, 4, 5, 6, 7); printf("c=%d\n", c); printf("d=%d\n", d); return 0; }
10.下標(biāo)引用、函數(shù)調(diào)用和結(jié)構(gòu)成員
[] //中括號(hào)操作符,訪問(wèn)要訪問(wèn)元素的內(nèi)容
() //函數(shù)訪問(wèn)操作符,要調(diào)用函數(shù)就要在函數(shù)名后加(),若函數(shù)有參數(shù),則把參數(shù)填入()
. //結(jié)構(gòu)體成員運(yùn)算符,左邊必須為實(shí)體即變量
-> //結(jié)構(gòu)體指針運(yùn)算符,左邊必須為指針
以上就是C語(yǔ)言入門篇--充分理解操作符的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言操作符的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
CreateCompatibleDC()函數(shù)案例詳解
這篇文章主要介紹了CreateCompatibleDC()函數(shù)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08OpenCV和C++實(shí)現(xiàn)圖像的翻轉(zhuǎn)(鏡像)、平移、旋轉(zhuǎn)、仿射與透視變換
這篇文章主要給大家介紹了關(guān)于OpenCV和C++實(shí)現(xiàn)圖像的翻轉(zhuǎn)(鏡像)、平移、旋轉(zhuǎn)、仿射與透視變換的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09Qt5 串口類QSerialPort的實(shí)現(xiàn)
在Qt5以上提供了QtSerialPort模塊,方便編程人員快速的開(kāi)發(fā)應(yīng)用串口的應(yīng)用程序。本文主要介紹了Qt5 串口類QSerialPort的實(shí)現(xiàn),,感興趣的可以了解一下2022-05-05cocos2d-x學(xué)習(xí)筆記之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMu
這篇文章主要介紹了cocos2d-x學(xué)習(xí)筆記之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex場(chǎng)景層介紹,需要的朋友可以參考下2014-09-09C/C++獲取當(dāng)前時(shí)間的方法總結(jié)(最全)
這篇文章主要為大家整理了C/C++中獲取當(dāng)前時(shí)間的最全方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)和借鑒價(jià)值,需要的可以了解一下2023-03-03C語(yǔ)言科學(xué)計(jì)算入門之矩陣乘法的相關(guān)計(jì)算
這篇文章主要介紹了C語(yǔ)言科學(xué)計(jì)算入門之矩陣乘法的相關(guān)計(jì)算,文章中還介紹了矩陣相關(guān)的斯特拉森算法的實(shí)現(xiàn),需要的朋友可以參考下2015-12-12