国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言基礎(chǔ)之——操作符(上)

這篇具有很好參考價值的文章主要介紹了C語言基礎(chǔ)之——操作符(上)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本篇文章,我們將展開講解C語言中的各種常用操作符,幫助大家更容易的解決一些運算類問題。

這里提醒一下小伙伴們,本章知識會大量涉及到二進制序列,不清楚二進制序列的小伙伴,可以去閱讀我的另一篇文章《數(shù)據(jù)在內(nèi)存中的存儲》學(xué)習(xí)了解。


目錄

一.操作符分類

二.操作符講解

1.算數(shù)操作符

2.移位操作符

(1)左移操作符?

(2)右移操作符

3.位操作符

(1)& 按位與

?(2)| 按位或

?(3)^ 按位異或

4.賦值操作符

5.單目操作符

總結(jié)


一.操作符分類

  • 算術(shù)操作符
  • 移位操作符
  • 位操作符
  • 賦值操作符
  • 單目操作符
  • 關(guān)系操作符
  • 邏輯操作符
  • 條件操作符
  • 逗號表達式
  • 下標引用,函數(shù)調(diào)用和結(jié)構(gòu)成員

二.操作符講解

由于操作符數(shù)量過多,所以本期文章我們將僅僅講解前五種。

1.算數(shù)操作符

算數(shù)操作符包括?“+,-,*,/,%”?五個。較為簡單,小伙伴們只需要注意以下幾點:

  1. 除了“%”操作符之外,其他的幾個操作符可以作用于整數(shù)和浮點數(shù)。
  2. 對于“/”操作符如果兩個操作數(shù)都為整數(shù),執(zhí)行整數(shù)除法。只要有浮點數(shù)就執(zhí)行浮點數(shù)除法
  3. “%”操作符的兩個操作數(shù)必須為整數(shù),返回的是整除后的余數(shù)。

2.移位操作符

<<? ? ? ? 左移操作符

>>? ? ? ? 右移操作符

移位操作符的左邊是要操作的數(shù),右邊則是要移動的位數(shù)。

要注意的是,移位操作符的操作數(shù)只能是整數(shù),移動的對象則是整數(shù)的二進制序列。

一個整型占四個字節(jié),也就是32個bit位,要記住,整型在數(shù)據(jù)中存儲的是二進制序列的補碼,所以我們對整型的操作都是對其補碼進行操作的。

(1)左移操作符?

左移操作符,顧名思義就是將整數(shù)的二進制序列向左邊移動唄,那么它的規(guī)則是什么呢???

移位規(guī)則:

左邊丟棄,右邊補0

#include<stdio.h>
int main()
{
	int n = 6;
	//00000000 00000000 00000000 00000110-移動前
	//00000000 00000000 00000000 00001100-移動后
	int m = n << 1;
	printf("%d\n", n);
	printf("%d\n", m);
	return 0;
}

如上代碼,將“6”的二進制序列向左移動一位,便得到了一個新的二進制序列。結(jié)果如下:

C語言基礎(chǔ)之——操作符(上),c++,開發(fā)語言

?由結(jié)果可以看出,移位操作符并不會改變操作數(shù)本身,而且細心的小伙伴們可以看出,向左移動一位不就相當于每一位的數(shù)字都“乘2”嘛,也就是將數(shù)字翻倍,移動n位,便翻2的n次方倍。

負數(shù)的操作與之一樣,就是小伙伴們千萬不要忘記原碼和補碼之間的轉(zhuǎn)換。

(2)右移操作符

移位規(guī)則:

右移運算分為兩種:

1.邏輯移位

左邊用0填充,右邊丟棄

2.算術(shù)移位

左邊用原值的符號位填充,右邊丟棄

不同的編譯器會有不同的右移運算,但是我們平時所使用的絕大多數(shù)編譯器都是算數(shù)右移。

#include<stdio.h>
int main()
{
	int n = -15;
	//10000000 00000000 00000000 00001111-原碼
	//11111111 11111111 11111111 11110000-反碼
	//11111111 11111111 11111111 11110001-補碼
	//11111111 11111111 11111111 11111000-移動后補碼
	//11111111 11111111 11111111 11110111-移動后反碼
	//10000000 00000000 00000000 00001000-移動后原碼
	int m = n >> 1;
	printf("%d\n", n);
	printf("%d\n", m);
	return 0;
}

結(jié)果如下:?

C語言基礎(chǔ)之——操作符(上),c++,開發(fā)語言

?同左移類似,右移則是將數(shù)字折半,但是如果是奇數(shù)的話,結(jié)果則會是比小數(shù)小的最臨近于小數(shù)的負數(shù)。比如-15的右移結(jié)果就是-8。

3.位操作符

&? ? ? ?按位與

|? ? ? ? ?按位或

^? ? ? ? 按位異或

位操作符的操作數(shù)也必須是整數(shù),也是對其二進制序列動手。

(1)& 按位與

假如我是一個企業(yè)高管,我現(xiàn)在需要程序員A程序員B一起來完成某個項目,這說明,A和B是必不可少的,他們兩個少了誰這個項目都完不成。這便是按位與

口訣:同真則真,有假則假

#include<stdio.h>
int main()
{
	int a = 6;
	//00000000 00000000 00000000 00000110-補碼
	int n = -15;
	//11111111 11111111 11111111 11110001-補碼
	int m = a & n;
	//00000000 00000000 00000000 00000110-補碼
	//11111111 11111111 11111111 11110001-補碼
	//00000000 00000000 00000000 00000000-m的補碼(重點)
	printf("%d\n", m);
	return 0;
}

我們習(xí)慣上將二進制序列的“1”視為真,“0”視為假,a&n,便是兩個二進制序列對應(yīng)的每一位相與,從而得到一個新的二進制序列。

由上可知,m的二進制序列全為0,也就代表m的值為0,結(jié)果如下:

C語言基礎(chǔ)之——操作符(上),c++,開發(fā)語言

?(2)| 按位或

假如我又是一個企業(yè)高管,我現(xiàn)在需要程序員A程序員B來完成某個項目,這說明,A和B他們兩個只要有一個能來做這個項目,就能成,如果一個都沒有,就做不了。這便是按位或。

口訣:同假則假,有真則真

#include<stdio.h>
int main()
{
	int a = 6;
	//00000000 00000000 00000000 00000110-補碼
	int n = -15;
	//11111111 11111111 11111111 11110001-補碼
	int m = a | n;
	//00000000 00000000 00000000 00000110-補碼
	//11111111 11111111 11111111 11110001-補碼

	//11111111 11111111 11111111 11110111-m的補碼(要點)

	//11111111 11111111 11111111 11110110-m的反碼
	//10000000 00000000 00000000 00001001-m的原碼
	printf("%d\n", m);
	return 0;
}

對兩個二進制序列的每一位相或,便得到m的補碼,但是m的符號位為1,是負數(shù),所以要轉(zhuǎn)化為原碼來讀。

結(jié)果如下:

C語言基礎(chǔ)之——操作符(上),c++,開發(fā)語言

?(3)^ 按位異或

假如我還是一個企業(yè)高管……這個不好舉例子了哈哈哈直接來看口訣:

相同為0,不同為1

#include<stdio.h>
int main()
{
	int a = 6;
	//00000000 00000000 00000000 00000110-補碼
	int n = -15;
	//11111111 11111111 11111111 11110001-補碼
	int m = a ^ n;
	//00000000 00000000 00000000 00000110-補碼
	//11111111 11111111 11111111 11110001-補碼
	//11111111 11111111 11111111 11110111-m的補碼(重點)
	//11111111 11111111 11111111 11110110-m的反碼
	//10000000 00000000 00000000 00001001-m的原碼
	printf("%d\n", m);
	return 0;
}

將兩個二進制序列的每一位相異或,結(jié)果如下:

C語言基礎(chǔ)之——操作符(上),c++,開發(fā)語言

4.賦值操作符

所謂賦值操作符,也就是我們經(jīng)常使用的“ = ”,將一個常量或者常量表達式賦給一個變量。

int a = 1;//不是賦值,是創(chuàng)建之后的初始化

a = 5;//是賦值

int b = 2;

int c = 0;

c = a + b;//也是賦值

除了等號以外,還有一些常用的復(fù)合賦值操作符:

+=? ? ? ? -=? ? ? ? *=? ? ? ? /=? ? ? ? %=? ? ? ? >>=? ? ? ? <<=? ? ? ? &=? ? ? ? |=? ? ? ? ^=

這些符合賦值其實是兩個運算式的合并,例如:

int a = 2;

a = a + 5 和 a += 5 是一樣的效果,后者看起來會更加的簡潔

5.單目操作符

所謂單目,也就是這種操作符的操作數(shù)只有一個。

  • !? ? ? ? ? ? ? ? 邏輯反操作
  • -? ? ? ? ? ? ? ? ? ?負值
  • +? ? ? ? ? ? ? ? ? 正值
  • &? ? ? ? ? ? ? ? ? 取地址
  • sizeof? ? ? ? ? ?操作數(shù)的類型長度(以字節(jié)為單位)
  • ~? ? ? ? ? ? ? ? ? 對一個數(shù)的二進制按位取反
  • --? ? ? ? ? ? ? ? ? 前置后置--
  • ++? ? ? ? ? ? ? ? 前置后置++
  • *? ? ? ? ? ? ? ? ? ?間接訪問操作符(解引用操作符)
  • (類型)? ? ? ? ? ?強制類型轉(zhuǎn)換

?這些操作符我們大多數(shù)都知道,下面我們僅僅講解一下不是那么熟悉的:

sizeof????????操作數(shù)的類型長度

sizeof 計算的結(jié)果是 size_t 類型

size_t 是無符號整型

對 size_t 類型的數(shù)據(jù)進行打印,可以使用%zd或%u

int a = 10;

printf("%zd",sizeof(a));

結(jié)果為4。?

~? ? ? ? ? ? ? ? ? 對一個數(shù)的二進制按位取反

int a = 0;

printf("%d",~a);

0的補碼二進制序列為:

00000000 00000000 00000000 00000000

111111111 111111111 111111111 111111111//為負數(shù),取原碼

111111111 111111111 111111111 111111110//反碼

10000000 00000000 00000000 00000001//原碼

結(jié)果為-1。

*? ? ? ? 間接訪問操作符

int a = 10;

int* p = &a;

*p;//這時候我們的*就是對p進行解引用操作,*p是通過p中存放的地址,找到p指向的對象。

*p 其實就是a。

(類型)? ? ? ? ? ?強制類型轉(zhuǎn)換

int a = (int )3.14;

3.14在編譯器中會被默認為是double類型,如果直接將其初始化給int型的a,則會在后續(xù)操作中出現(xiàn)誤差甚至錯誤,所以要將其強制類型轉(zhuǎn)化為int型。

總結(jié)

本期關(guān)于操作符的知識講解到這里就要結(jié)束啦,稍后博主將更新C語言基礎(chǔ)之——操作符(下)來講解剩余的操作符。

喜歡博主文章的小伙伴們不要忘記一鍵三連哦,我們下期再見!文章來源地址http://www.zghlxwxcb.cn/news/detail-668589.html

到了這里,關(guān)于C語言基礎(chǔ)之——操作符(上)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • <C語言> 操作符

    <C語言> 操作符

    加法(+):用于將兩個操作數(shù)相加。 減法(-):用于將第一個操作數(shù)減去第二個操作數(shù)。 乘法(*):用于將兩個操作數(shù)相乘。 除法(/):用于將第一個操作數(shù)除以第二個操作數(shù)。 取模(%):用于求兩個操作數(shù)相除的余數(shù)。 乘法、除法和取模具有相同的優(yōu)先級,高于加法

    2024年02月12日
    瀏覽(20)
  • C語言初級<操作符>

    C語言初級<操作符>

    C語言是一門面向過程的、抽象化的通用程序設(shè)計語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產(chǎn)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設(shè)計語言。 本篇文章是基于C語言,對入門小知識操作符的講解,展

    2024年02月12日
    瀏覽(21)
  • C語言的操作符

    C語言中的操作符是用于操作變量、常量和表達式的符號,以下是我學(xué)習(xí)操作符整理的相關(guān)知識點。 算數(shù)操作符: + - * / % + 、 - 、 * 、 / 可以用于操作整數(shù)和浮點數(shù) % 只能操作整數(shù),返回整除后的余數(shù) 左移操作符 右移操作符 這兩個只能用于整數(shù) 操作符 操作符 位操作符: | ^

    2024年02月01日
    瀏覽(15)
  • C語言---操作符詳解

    C語言---操作符詳解

    算術(shù)操作符 移位操作符 位操作符 賦值操作符 單目操作符 關(guān)系操作符 邏輯操作符 條件操作符 逗號操作符 下標引用、函數(shù)調(diào)用和結(jié)構(gòu)成員。 移位操作符,移動的是二進制位。 警告:對于移位運算符,不要移動負位數(shù),這個是標準定義的。 3.1.1、原碼、反碼、補碼介紹 整數(shù)

    2024年02月07日
    瀏覽(52)
  • C語言——操作符詳解

    C語言——操作符詳解

    哈嘍,大家好,今天我們來學(xué)習(xí)C語言中的各中操作符。 目錄 1.操作符的分類 2.算數(shù)操作符 整數(shù)的二進制表示 3.位移操作符 3.1左移操作符 3.2右移操作符 4.位操作符 5.賦值操作符 6.單目操作符 6.1 單目操作符介紹 ~ 的用法: 6.2 sizeof 和 數(shù)組 7.關(guān)系操作符 8.邏輯操作符 9. 條件操

    2024年02月05日
    瀏覽(22)
  • C語言操作符練習(xí)

    C語言操作符練習(xí)

    曾經(jīng)有一道面試題,要求 不能創(chuàng)建臨時變量(第三個變量),實現(xiàn)兩個數(shù)的交換。 這道題如果沒有前半句的修飾,就只是簡單的一道基礎(chǔ)題。 法一: 但是如果加上了前半句的修飾,就需要更換思路了。 法二: 第二種方法比第一種方法更考驗思維,但是中方法也有弊端,如

    2024年02月19日
    瀏覽(22)
  • 【C語言】操作符詳解

    【C語言】操作符詳解

    ??個人主頁:Weraphael ???作者簡介:目前正在回爐重造C語言(2023暑假) ??專欄:【C語言航路】 ?? 希望大家多多支持,咱一起進步!?? 如果文章對你有幫助的話 歡迎 評論?? 點贊???? 收藏 ?? 加關(guān)注?? 算術(shù)操作符 位移操作符 位操作符 賦值操作符 單目操作符 關(guān)

    2024年02月16日
    瀏覽(25)
  • c語言---操作符(詳解)

    c語言---操作符(詳解)

    算術(shù)操作符: + 、- 、*、/ 、% 移位操作符: 位操作符: | ^ ` 賦值操作符: = 、+= 、 -= 、 = 、 /= 、%= 、= 、= 、= 、|= 、^= 單?操作符: !、++、–、、 、+、-、~ 、sizeof、(類型) 關(guān)系操作符: 、= 、 、= 、 == 、 != 邏輯操作符: 、|| 條件操作符: ? : 逗號表達式: , 下標引?: [

    2024年02月22日
    瀏覽(25)
  • C語言操作符例題

    感謝各位大佬對我的支持,如果我的文章對你有用,歡迎點擊以下鏈接 ?????? 個人主頁 ?????? C語言 ????????? C語言例題 ?????? python 下面代碼的結(jié)果是:( ) A.a = 8 b = 23 c = 8 B.a = 9 b = 23 c = 8 C.a = 9 b = 25 c = 8 D.a = 9 b = 24 c = 8 答案 B c=++a是先執(zhí)行++a,也就是a=a+1=6(注意這

    2024年02月04日
    瀏覽(18)
  • C語言:“~”操作符詳解

    ~:含義及用法舉例 文章目錄 前言 一、“~”是什么? 二、原碼、反碼及補碼 1.簡介 2.用法舉例 ①正整數(shù) ②負整數(shù) ③零 三、“~”操作符 1.簡介 2.用法舉例 ①正整數(shù) ②負整數(shù) ③零 本文在簡單介紹原碼反碼補碼的基礎(chǔ)上,介紹“~”操作符的用法。 ~:一種單目操作符,即對

    2024年02月10日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包