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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C++ Primer 5 CH4 表达式

發(fā)布時(shí)間:2023/12/13 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5 CH4 表达式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

4.1 基礎(chǔ)

  • 函數(shù)調(diào)用也是一種特殊的運(yùn)算符,它對(duì)運(yùn)算對(duì)象的數(shù)量沒有限制。
  • C++ 的表達(dá)式要么是左值,要么是右值。左值可以位于賦值語(yǔ)句的左邊,右值則不可以。
  • 當(dāng)一個(gè)對(duì)象被用作右值的時(shí)候,用的是對(duì)象的值;當(dāng)對(duì)象被用作左值的時(shí)候,用的是對(duì)象的身份。
    【mark】
  • 優(yōu)先級(jí)規(guī)定了運(yùn)算對(duì)象的組合方式,但是沒有說明運(yùn)算對(duì)象的求值順序,一般不會(huì)明確指定求值順序。
  • 對(duì)于沒有指定執(zhí)行順序的運(yùn)算符,如果表達(dá)式指向并修改了同一個(gè)對(duì)象,將會(huì)引發(fā)錯(cuò)誤并產(chǎn)生未定義的行為。
cout << i << ++i << endl; // 未定義的

4.2 算術(shù)運(yùn)算符

  • 算術(shù)運(yùn)算符的運(yùn)算對(duì)象和求值結(jié)果都是右值。
  • 在表達(dá)式求值之前,小整數(shù)類型的運(yùn)算對(duì)象被提升成較大的整數(shù)類型,所有運(yùn)算對(duì)象最終會(huì)轉(zhuǎn)換成同一類型。
  • 一元正(負(fù))號(hào)運(yùn)算符作用于一個(gè)指針或者算數(shù)值時(shí),返回運(yùn)算對(duì)象(取負(fù))的提升后的副本。
bool b = true; bool b2 = -b; // b2 is true
  • m = (m / n) * n + m % n,則 m % n 符號(hào)與 m 相同。

4.3 邏輯和關(guān)系運(yùn)算符

  • 邏輯和關(guān)系運(yùn)算符的運(yùn)算對(duì)象以及求值結(jié)果都是右值。
  • 相等性測(cè)試與布爾字面值
if (val) {} // 如果 val 是任意的非 0 值 if (!val) {} // 如果 val 是 0 if (val == true) // 如果 val 等于 1

4.4 賦值運(yùn)算符

  • 賦值運(yùn)算符的左側(cè)對(duì)象必須是一個(gè)可修改的左值。
int i = 0, j = 0, k = 0; // 初始化而非賦值 const int ci = i; // 初始化而非賦值 1024 = k; // 錯(cuò)誤 字面值是右值 i + j = k; // 錯(cuò)誤 算術(shù)表達(dá)式是右值 ci = k; // 錯(cuò)誤 ci 是常量左值
  • 賦值運(yùn)算的結(jié)果是它的左側(cè)對(duì)象,并且是一個(gè)左值,結(jié)果的類型是左側(cè)運(yùn)算對(duì)象的類型。
  • 賦值運(yùn)算符滿足右結(jié)合律。

4.5 遞增和遞減運(yùn)算符

  • 遞增和遞減運(yùn)算符有兩種形式:前置版本 ++i 和后置版本 i++。這兩種運(yùn)算符必須作用于左值運(yùn)算對(duì)象,前置版本將對(duì)象本身作為左值返回,后置版本將對(duì)象原始值的副本作為右值返回。
  • 除非必須,否則不用遞增和遞減運(yùn)算符的后置版本。

4.6 成員訪問運(yùn)算符

  • ptr->mem == (*ptr).mem

4.7 條件運(yùn)算符

4.8 位運(yùn)算符

  • 位運(yùn)算符的運(yùn)算對(duì)象如果是“小整型”,則會(huì)被自動(dòng)提升為整數(shù)類型。
  • 位運(yùn)算符如何處理帶符號(hào)數(shù)的符號(hào)位是未定義的,因此建議僅將位運(yùn)算符用于處理無符號(hào)數(shù)。
  • 移位運(yùn)算符(IO運(yùn)算符)滿足左結(jié)合律。

sizeof 運(yùn)算符

  • sizeof 運(yùn)算符返回一條表達(dá)式或者一個(gè)類型名字所占的字節(jié)數(shù),返回 size_t 類型的常量表達(dá)式。
sizeof (type) sizeof expr
  • sizeof 運(yùn)算符滿足右結(jié)合律。
  • 在 sizeof 的運(yùn)算對(duì)象中解引用一個(gè)無效指針是安全的,因?yàn)橹羔槢]有被真正使用。
  • 對(duì)數(shù)組執(zhí)行 sizeof 運(yùn)算得到整個(gè)數(shù)組的大小,對(duì) sting 或 vector 執(zhí)行 sizeof 運(yùn)算只返回該類型固定部分的大小。

4.10 逗號(hào)運(yùn)算符

  • 逗號(hào)運(yùn)算符先對(duì)左側(cè)的表達(dá)式求值,然后將結(jié)果丟棄掉,再對(duì)右側(cè)的表達(dá)式求值,返回右側(cè)的結(jié)果。

4.11 類型轉(zhuǎn)換

  • 算術(shù)轉(zhuǎn)換:運(yùn)算符的運(yùn)算對(duì)象將轉(zhuǎn)換成最寬的類型。
  • 整型提升:轉(zhuǎn)換后的類型要容納原類型所有可能的值。
  • 如果一個(gè)運(yùn)算對(duì)象是無符號(hào)類型,另一個(gè)是帶符號(hào)類型:
    無符號(hào)類型不小于帶符號(hào)類型:帶符號(hào)類型轉(zhuǎn)成無符號(hào)類型;
    帶符號(hào)類型大于無符號(hào)類型:轉(zhuǎn)換結(jié)果依賴于機(jī)器;
  • 指針的轉(zhuǎn)換
    常量整數(shù)值 0 或者字面值 nullptr 能轉(zhuǎn)換成任意指針類型;
    指向任意非常量的指針能轉(zhuǎn)成 void;
    指向任意對(duì)象的指針能轉(zhuǎn)成 const void;
  • 轉(zhuǎn)換成布爾類型:指針或算術(shù)值為 0,結(jié)果為 false,否則為 true。
  • 轉(zhuǎn)換成常量:允許將指向非常量的指針(引用)轉(zhuǎn)換成相應(yīng)的常量指針(引用)。
  • 類類型能定義由編譯器自動(dòng)執(zhí)行的轉(zhuǎn)換,不過編譯器每次只能執(zhí)行一次類類型的轉(zhuǎn)換。
  • 強(qiáng)制轉(zhuǎn)換
cast-name <type> (expression)
  • static_cast
// 把一個(gè)較大的算術(shù)類型賦值給較小的類型。 double slope = static_cast<double>(j) / i; // 找回存在于 void* 指針的值 double *p = static_cast<double*>(p);
  • const_cast
// 改變運(yùn)算對(duì)象的底層 const const char *pc; char *p = const_cast<char*>(pc);
  • reinterpret_cast
// todo

轉(zhuǎn)載于:https://www.cnblogs.com/eathen/p/6599498.html

總結(jié)

以上是生活随笔為你收集整理的C++ Primer 5 CH4 表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。