日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C运算符解析及优先级

發布時間:2024/4/13 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C运算符解析及优先级 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C運算符的優先級

  • C語言有大量的運算符。表B.2.1按優先級從高至低的順序列出了C運算符,并給出了其結合性。除非特別指明,否則所有運算符都是二元運算符(需要兩個運算對象)。注意,一些二元運算符和一元運算符的表示符號相同,但是其優先級不同。例如,*(乘法運算符)和*(間接運算符)。表后面總結了每個運算符的用法。

?

/**********************算術運算符*******************/+ 把右邊的值加到左邊的值上。 + 作為一元運算符,生成一個大小和符號都與右邊值相同的值。 - 從左邊的值中減去右邊的值 - 作為一元運算符,生成一個與右邊值大小相等符號相反的值。 * 把左邊的值乘以右邊的值。 / 把左邊的值除以右邊的值;如果兩個運算對象都是整數,其結果要被截斷。 % 得左邊值除以右邊值時的余數 ++ 把右邊變量的值加1(前綴模式),或把左邊變量的值加1(后綴模式)。 -- 把右邊變量的值減1(前綴模式),或把左邊變量的值減1(后綴模式)。/**********************關系運算符*******************/<  小于 <=  小于或等于 ==  等于 >=  大于或等于 >  大于 !=  不等于/**********************賦值運算符*******************/C語言有一個基本賦值運算符和多個復合賦值運算符。=運算符是基本的形式:= 把它右邊的值賦給其左邊的左值。 下面的每個賦值運算符都根據它右邊的值更新其左邊的左值。我們使用 R-H表示右邊,L-R表示左邊。 += 把左邊的變量加上右邊的量,并把結果儲存在左邊的變量中。 -= 從左邊的變量中減去右邊的量,并把結果儲存在左邊的變量中。 *= 把左邊的變量乘以右邊的量,并把結果儲存在左邊的變量中。 /= 把左邊的變量除以右邊的量,并把結果儲存在左邊的變量中。 %= 得到左邊量除以右邊量的余數,并把結果儲存在左邊的變量中。 &= 把L-H & R-H的值賦給左邊的量,并把結果儲存在左邊的變量中。 |= 把L-H | R-H的值賦給左邊的量,并把結果儲存在左邊的變量中。 ^= 把L-H ^ R-H的值賦給左邊的量,并把結果儲存在左邊的變量中。 >>= 把L-H >> R-H的值賦給左邊的量,并把結果儲存在左邊的變量中。 <<= 把L-H << R-H的值賦給左邊的量,并把結果儲存在左邊的變量中。示例 rabbits *= 1.6;與rabbits = rabbits * 1.6效果相同。/**********************邏輯運算符*******************/邏輯運算符通常以關系表達式作為運算對象。!運算符只需要一個運算對象,其他運算符需要兩個運算對象,運算符左邊一個,右邊一個。&& 邏輯與 || 邏輯或 ! 邏輯非1.邏輯表達式 當且僅當兩個表達式都為真時,expresson1 && expresson 2的值才為真。 兩個表達式中至少有一個為真時,expresson 1 && expresson 2的值就為真。 如果expresson的值為假,則!expresson為真,反之亦然。2.邏輯表達式的求值順序 邏輯表達式的求值順序是從左往右。當發現可以使整個表達式為假的條件時立即停止求值。3.示例 6 > 2 && 3 == 3 為真。 !(6 > 2 && 3 == 3) 為假。 x != 0 && 20/x < 5 只有在x是非零時才會對第2個表達式求值。/**********************條件運算符*******************/?:有3個運算對象,每個運算對象都是一個表達式:expression1 ?expression2 : expression3 如果expression1為真,則整個表達式的值等于expression2的值;否則,等于expression3的值。示例 (5 > 3) ? 1 : 2的值為1。 (3 > 5) ? 1 : 2的值為2。 (a > b) ? a : b的值是a和b中較大者/**********************與指針有關運算符*******************/&是地址運算符。當它后面是一個變量名時,&給出該變量的地址。 *是間接或解引用運算符。當它后面是一個指針時,*給出儲存在指針指向地址中的值。示例 &nurse是變量nurse的地址: nurse = 22; ptr = &nurse; /* 指向nurse的指針 */ val = *ptr; 以上代碼的效果是把22賦給val。/**********************符號運算符*******************/-是負號,反轉運算對象的符號 + 是正號,不改變運算對象的符號/**********************結構和聯合運算符*******************/結構和聯合使用一些運算符標識成員。成員運算符與結構和聯合一起使用,間接成員運算符與指向結構或聯合的指針一起使用。1.成員運算符 成員運算符(.)與結構名或聯合名一起使用,指定結構或聯合中的一個成員。如果name是一個結構名,member是該結構模板指定的成員名,那么name.member標識該結構中的這個成員。name.member的類型就是被指定member的類型。在聯合中也可以用相同的方式使用成員運算符。示例 struct {int code;float cost; } item; item.code = 1265; 上面這條語句把1265賦給結構變量item的成員code。 2.間接成員運算符(或結構指針運算符) 間接成員運算符(->)與一個指向結構或聯合的指針一起使用,標識該結構或聯合的一個成員。假設ptrstr是一個指向結構的指針,member是該結構模板指定的成員,那么ptrstr->member標識了指針所指向結構的這個成員。在聯合中也可以用相同的方式使用間接成員運算符。示例 struct {int code;float cost; } item, * ptrst; ptrst = &item; ptrst->code = 3451;以上程序段把3451賦給結構item的成員code。下面3種寫法是等效的: ptrst->code item.code  (*ptrst).code/**********************按位運算符*******************/下面所列除了~,都是按位運算符。 ~ 是一元運算符,它通過翻轉運算對象的每一位得到一個值。 & 是邏輯與運算符,只有當兩個運算對象中對應的位都為1時,它生成的值中對應的位才為1。 | 是邏輯或運算符,只要兩個運算對象中對應的位有一位為1,它生成的值中對應的位就為1。 ^ 是按位異或運算符,只有兩個運算對象中對應的位中只有一位為1(不能全為1),它生成的值中對應的位才為1。 << 是左移運算符,把左邊運算對象中的位向左移動得到一個值。移動的位數由該運算符右邊的運算對象確定,空出的位用0填充。 >> 是右移運算符,把左邊運算對象中的位向右移動得到一個值。移動的位數由該運算符右邊的運算對象確定,空出的位用0填充。示例 假設有下面的代碼: int x = 2; int y = 3; x & y的值為2,因為x和y的位組合中,只有第1位均為1。而y << x的值為12,因為在y的位組合中,3的位組合向左移動兩位,得到12。/**********************混合運算符*******************/sizeof給出它右邊運算對象的大小,單位是char的大小。通常,char類型的大小是1字節。運算對象可以圓括號中的類型說明符,如sizeof(float),也可以是特定的變量名、數組名等,如sizeof foo。sizeof表達式的類型是size_t。 _Alignof(C11)給出它的運算對象指定類型的對齊要求。一些系統要求以特定值的倍數在地址上儲存特定類型,如4的倍數。這個整數就是對齊要求。 (類型名)是強制類型轉換運算符,它把后面的值轉換成圓括號中關鍵字指定的類型。例如,(float)9把整數9轉換成浮點數9.0。,是逗號運算符,它把兩個表達式鏈接成一個表達式,并保證先對最左端的表達式求值。整個表達式的值是最右邊表達式的值。該運算符通常在for循環頭中用于包含更多的信息。示例 for (step = 2, fargo = 0; fargo < 1000; step *= 2) fargo += step;

?

總結

以上是生活随笔為你收集整理的C运算符解析及优先级的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。