最近自己看了一些c的操作符,便按照自己的想法總結如下:
3.位操作符
4.賦值操作符
5.單目操作符
6.關係操作符
7.邏輯操作符
8.條件操作符
9.逗號表示式
10.下標引用,函式呼叫和結構成員
+ 加 - 減 * 乘 / 除 % 取模
(1)%操作符只能對兩個整數進行操作,返回值是整除後的餘數
(2)除%操作符外,其餘四個操作符均可以作用於整數和浮點數
(3)/操作符,如果兩個運算元均為整數,則執行整數除法。運算元中只要有乙個為浮點數,就執行浮點數除法
*左邊拋棄,右邊補0
*運算元有乘2的n次方的效果
(1)邏輯移位
*左邊補0,右邊丟棄
(2)算數移位
*左邊補原值的符號位,右邊丟棄
*對運算元有除2的n次方的效果
*經過左移或右移操作之後,原數的值不發生改變,表示式的值發生改變
*對於移位操作符,不能移動負數字
應用:
例題:不建立臨時變數,實現兩數的交換
#define _crt_secure_no_warnings 1
#include
#include
int main()
輸出結果為:a = 10, b = 20
a = 20, b = 10
*位操作符均是對運算元的二進位制位進行操作
*位操作符的運算元必須為整數
*使用 = 操作符可以進行連續賦值,但是一般不建議進行連續賦值操作,因為對於同樣的語義:
//a = x = y + 1;
//x = y + 1;
//a = x;
明顯後者更加清晰易讀,易於除錯
+=
-=*=
/=%=
>>=
<<=
&=|=
^=
! 邏輯反操作
- 負值
+ 正值
& 取位址
sizeof() 運算元的型別長度(以位元組為單位)
~ 對乙個數的二進位制按位取反
-- 前置、後置--
++ 前置、後置++
* 間接訪問操作符(解引用操作符)
(型別) 強制型別轉換
(1)對於陣列arr,&arr為整個陣列的位址,
arr為陣列首元素的位址
(2)對於++和--這兩個操作符,前置時:先對運算元進行操作,然後再使用運算元,
後置是:先使用運算元,再對運算元進行操作
(3)對強制型別轉換的使用,例:
#include
int main()
強制轉換之後,將3賦給了a。
>
>=
<
<=
!= ==
*注意在程式設計過程中,不要將==和=寫錯,導致錯誤。
&& 邏輯與
|| 邏輯或
*兩者的特點:
在邏輯與過程中,遇假停;
在邏輯或過程中,遇真停。
exp1 ? exp2 : exp3
例:使用條件表示式求兩數中的最大數:
a > b ? a : b
exp1,exp2,exp3, ...expn
例:以下**:
int a = 1
;int b = 2
;int c = (a>b, a=b+10, a, b=a+1);
求得c值為:13。
逗號表示式在執行過程中,從左到右依次執行,整個表示式的結果是最後乙個表示式的結果。
運算元:乙個陣列名 + 乙個索引值
int arr[10] = 0; //建立陣列
arr[2] = 10; //使用下表引用操作符
//的兩個運算元為:arr 和 2。
可接受乙個或者多個運算元:第乙個運算元為函式名,剩餘的運算元為傳遞給函式的引數。
#include
void test1()
void test2(const
char* str)
int main()
兩種方法: 結構體.成員名
結構體指標->成員名
#include
#include
struct stu
;int main()
輸出結果為:age:10
name:zhangsan
或許還有很大的不足,還望各位可以指出,本人小白,希望可以和各位相互**一下有關c的知識^_^。
c語言操作符 位操作符 移位操作符
1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...
MySQL的and操作符和or操作符
有時對where的要篩選的列不止乙個時,那麼就用到了and操作符和or操作符,and操作符顧名思義的意思是 並且 而or操作符的意思是 或者 比如以部門員工表為例 查詢部門編號為d001並且入職日期為 1985 02 02的員工編號,那麼就要用到and操作符 那如果是查詢部門編號為d001或者入職日...
C 中的操作符
c 的精彩世界還離不開其提供的豐富的操作符,按照運算元的個數,c 操作符可分為以下幾類 如果從操作符的作用來看,c 操作符可以分為賦值操作符,算術操作符,關係操作符,邏輯操作符,位操作符和其它操作符。1.賦值操作符 賦值操作符除基本的賦值操作符 之外還包括以下的組合賦值操作符 要注意的是,對於復合的...