C語言入門篇--充分理解操作符
1.算術操作符
+ 加
- 減
* 乘
/ 除
% 取模
1.1除法運算
除法運算分母不可為零,否則程序會中斷報錯,所以要在程序中檢驗分母是否為零。
1.2取模運算
取模即取余數(shù)。
2.移位操作符
相關知識
>> 右移
<< 左移
1.移位運算是站在二進制角度移位的
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ù)移位運算不能整除時,只保留整數(shù)部分
4.C語言中的移位運算符
(如<<、>>)只能用于整型(如int、short、long、char等),不能用于浮點型(如double、float)
5.移位分為算術移左移、算術移右移和邏輯左移、邏輯右移
算術左移和算術右移主要用來進行有符號數(shù)的倍增、減半;
邏輯左移和邏輯右移主要用來進行無符號數(shù)的倍增、減半。
3.位操作符
位操作是站在二進制角度進行操作的。
& 按位與
| 按位或
^ 按位異或
3.1按位與&
eg:
參與按位與的兩二進制位數(shù)都為真(1)結果為真,否則只要有一個為假(0)結果為假。
#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按位或 |
參與按位與的兩二進制位數(shù)只要有一個為真(1)結果為真,若都為假(0)結果為假。
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異或 ^
參與按位與的兩二進制位數(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;//加等 等價于x=x+10; //其他操作符類似
printf("%d\n", x2);
return 0;
}

5.單目操作符
單目操作符即只有一個操作數(shù)的操作符。
! 邏輯反操作
- 負值
+ 正值
& 取地址
sizeof 操作數(shù)的類型長度(以字節(jié)為單位)
~ 對一個數(shù)的二進制按位取反
-- 前置、后置--
++ 前置、后置++
* 間接訪問操作符(解引用操作符)
(類型) 強制類型轉(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 負值 - 正值 +
給數(shù)字前帶+ -變成對應的正數(shù)或負數(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 取地址 &
每個變量在內(nèi)存中都有對應的地址。
eg:
#include <stdio.h>
int main()
{
int x = 10;
printf("%d\n", x);
printf("0x%p\n", &x);//%p:以十六進制打印地址;加0x:為了打印出來的是變量所對應的標準地址。
return 0;
}

5.4 取反 ~
對一個數(shù)的二進制按位取反。
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:關于解引用操作符 的理解以看變量的左值與右值。
#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 強制類型轉(zhuǎn)換 (類型)
強制類型轉(zhuǎn)換是把變量從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。
強制類型轉(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.關系操作符
關系操作符就是用來判斷大小關系。
>
>=
<
<=
!= 用于測試“不相等”
== 用于測試“相等”
7.邏輯操作符
&& 邏輯與
|| 邏輯或
&& 兩邊的表達式都為真,結果為真。
| | 兩邊的表達式只要有一個為真,結果為真。
注意:
&&和| |的判斷規(guī)則:
&& 若第一個表達式為假,結果為假,則不判斷第二個表達式。
| | 若第一個表達式為真,結果為真,則不判斷第二個表達式。
8.條件操作符
exp1 ? exp2 : exp3//又稱三目操作符,它是唯一有3個操作數(shù)的運算符
若表達式exp1為真,則執(zhí)行exp2;
若表達式exp1為假,則執(zhí)行exp3;
9.逗號表達式
1.逗號表達式中的每個表達式都會執(zhí)行。
2.逗號表達式中的結果為最后一個表達式的值。
3.可以用()隔開逗號表達式。
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.下標引用、函數(shù)調(diào)用和結構成員
[] //中括號操作符,訪問要訪問元素的內(nèi)容
() //函數(shù)訪問操作符,要調(diào)用函數(shù)就要在函數(shù)名后加(),若函數(shù)有參數(shù),則把參數(shù)填入()
. //結構體成員運算符,左邊必須為實體即變量
-> //結構體指針運算符,左邊必須為指針
以上就是C語言入門篇--充分理解操作符的詳細內(nèi)容,更多關于C語言操作符的資料請關注腳本之家其它相關文章!
相關文章
C++基于boost asio實現(xiàn)sync tcp server通信流程詳解
這篇文章主要介紹了C++基于boost asio實現(xiàn)sync tcp server通信的流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07

