C語言_操作符
操作符可以分很多的類,例如:算術操作符 移位操作符 位操作符 賦值操作符 單目操作符 關係操作符 邏輯操作符 條件操作符 逗號表示式 下標引用,函式呼叫和結構成員.這篇部落格則是把每類操作符介紹一下.
算術操作符: + - * / %
常見的運算子號:加減乘除,常用於整數和浮點數
整數/整數還是等於整數
%,取餘,運算元必須是整數
移位操作符:<< >>
左邊操作符<< : 左邊拋棄,右邊補0
右移操作符>>: 右邊拋棄,左邊補0
- 邏輯移位 左邊用0填充,右邊丟棄
- 算術移位 左邊用原該值的符號位填充,右邊丟棄
位操作符:& | ^
#include <stdio.h> int main() { int num1 = 1; int num2 = 2; num1 & num2;//按位與 num1 | num2;//按位或 num1 ^ num2;//按位異或 return 0; }
賦值操作符: =
可以給一個變數重新賦值
複合賦值符: += *= /= %= >>= <<= &= |= ^=
經過運算,把值返回自身
i=i+1; i+=1; //兩者等價
單目操作符: ! - + & sizeof ~ -- -- ++ *
! 邏輯反操作
- 負值
+ 正值
& 取地址
sizeof 運算元的型別長度(以位元組為單位)
~ 對一個數的二進位制按位取反
-- 前置、後置--
++ 前置、後置++
* 間接訪問操作符(解引用操作符)
關係操作符:> >= < <= != ==
用於比較兩個數的大小
在程式碼中'=='號的意思才是相等,切不可與'='混用
邏輯操作符:|| &&
1&2----->0 1&&2---->1 1|2----->3 1||2---->1
條件操作符: exp1?exp2:exp3
是一個三目操作符
a>b?a:b; //如果a>b為真,則輸出a;為假,輸出b
逗號表示式: ,
逗號表示式,從左向右依次執行。整個表示式的結果是最後一個表示式的結果
下標引用、函式呼叫和結構成員
1,下標應用:
char arr[10]={0};//定義一個十個元素的陣列arr,初始化都為0 for(int i=0;i<10;++i) { printf("%d",arr[i]): } //列印陣列的每一個元素
2,函式呼叫:
#include <stdio.h> void test1() { printf("hehe\n"); } void test2(const char *str) { printf("%s\n", str); } int main() { test1(); //實用()作為函式呼叫操作符。 test2("hello world");//實用()作為函式呼叫操作符。 return 0; }
3,結構成員:
#include <stdio.h> struct Stu { char name[10]; int age; char sex[5]; double score; }; void set_age1(struct Stu stu) { stu.age = 18; } void set_age2(struct Stu* pStu) { pStu->age = 18;//結構成員訪問 } int main() { struct Stu stu; struct Stu* pStu = &stu;//結構成員訪問 stu.age = 20;//結構成員訪問 set_age1(stu); pStu->age = 20;//結構成員訪問 set_age2(pStu); return 0; }
操作符的屬性:
複雜表示式的求值有三個影響的因素。
1. 操作符的優先順序
2. 操作符的結合性
3. 是否控制求值順序。 兩個相鄰的操作符先執行哪個?取決於他們的優先順序。如果兩者的優先順序相同,取決於他們的結合性。
這些只是對函式操作符的大概概述,操作符是寫程式碼的基礎,還是需要大量的練習來實習.