最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C++語言中的加法運(yùn)算符與賦值運(yùn)算符的用法

 更新時(shí)間:2016年01月14日 15:08:58   投稿:goldensun  
這篇文章主要介紹了C++語言中的加法運(yùn)算符與賦值運(yùn)算符的用法,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

加法運(yùn)算符:+ 和 -
語法

expression + expression 
expression – expression

備注
相加運(yùn)算符為:

  • 加 (+)
  • 減 (–)

這些二進(jìn)制運(yùn)算符具有從左至右的關(guān)聯(lián)性。

相加運(yùn)算符采用算術(shù)或指針類型的操作數(shù)。加法 (+) 運(yùn)算符的結(jié)果是操作數(shù)之和。減法 (–) 運(yùn)算符的結(jié)果是操作數(shù)之差。如果一個(gè)操作數(shù)是指針或兩個(gè)操作數(shù)都是指針,則它們必須是指向?qū)ο蟮闹羔?,而不是指向函?shù)的指針。如果兩個(gè)操作數(shù)都是指針,則結(jié)果沒有意義,除非它們是指向同一數(shù)組中的對(duì)象的指針。
相加運(yùn)算符采用 arithmetic、integral 和 scalar 類型的操作數(shù)。下表定義了這些操作數(shù)。
用于相加運(yùn)算符的類型

S.N. 構(gòu)造函數(shù) & 描述
arithmetic 整型和浮點(diǎn)類型統(tǒng)稱為“算術(shù)”類型。
integral 所有大小(long、short)和枚舉數(shù)的 char 和 int 類型為“整數(shù)”類型。
scalar 標(biāo)量操作數(shù)是算術(shù)類型或指針類型的操作數(shù)。

這些運(yùn)算符的合法組合為:

  • 算術(shù) + 算術(shù)
  • 標(biāo)量 + 整數(shù)
  • 整數(shù) + 標(biāo)量
  • 算術(shù) – 算術(shù)
  • 標(biāo)量 – 標(biāo)量

請(qǐng)注意,加法和減法不是等效運(yùn)算。

// expre_Additive_Operators.cpp
// compile with: /EHsc
#include <iostream>
#define SIZE 5
using namespace std;
int main() {
  int i = 5, j = 10;
  int n[SIZE] = { 0, 1, 2, 3, 4 };
  cout << "5 + 10 = " << i + j << endl
     << "5 - 10 = " << i - j << endl;

  // use pointer arithmetic on array

  cout << "n[3] = " << *( n + 3 ) << endl;
}

指針加法
在加法運(yùn)算中,如果其中一個(gè)操作數(shù)是指向?qū)ο髷?shù)組的指針,則另一個(gè)操作數(shù)必須是整型。結(jié)果為與原始指針類型相同的指針和指向另一個(gè)數(shù)組元素的指針。以下代碼片段闡述了此概念:
short IntArray[10]; // Objects of type short occupy 2 bytes
short *pIntArray = IntArray;

for( int i = 0; i < 10; ++i )
{
  *pIntArray = i;
  cout << *pIntArray << "\n";
  pIntArray = pIntArray + 1;
}

雖然將整數(shù)值 1 添加到 pIntArray,但這并不表示“將 1 添加到該地址”,而是指“調(diào)整指針使其指向數(shù)組中的下一個(gè)對(duì)象”,而該對(duì)象恰好是在 2 字節(jié)(或者 sizeof( int ))之外。
注意
在 C++ 程序中很少找到 pIntArray = pIntArray + 1 形式的代碼;若要實(shí)現(xiàn)遞增,以下形式更可?。簆IntArray++ 或 pIntArray += 1。

指針減法
如果兩個(gè)操作數(shù)都是指針,則減法運(yùn)算的結(jié)果就是兩個(gè)操作數(shù)之差(在數(shù)組元素中)。減法表達(dá)式產(chǎn)生類型 ptrdiff_t(在標(biāo)準(zhǔn)包含文件 STDDEF.H 中定義)的帶符號(hào)的整數(shù)結(jié)果。
其中一個(gè)操作數(shù)可以是整型,條件是該操作數(shù)是第二操作數(shù)。減法的結(jié)果的類型與原始指針的類型相同。減法的值是指向第 (n – i) 個(gè)數(shù)組元素的指針,其中 n 是由原始指針指向的元素,而 i 是第二操作數(shù)的整數(shù)值。

賦值運(yùn)算符

語法

    expression assignment-operator expression 
assignment-operator : one of
  =  *=  /=  %=  +=  –=  <<=  >>=  &=  ^=  |=

備注
賦值運(yùn)算符將值存儲(chǔ)在左操作數(shù)指定的對(duì)象中。有兩種賦值操作:簡(jiǎn)單賦值,其中第二個(gè)操作數(shù)的值存儲(chǔ)在第一個(gè)操作數(shù)指定的對(duì)象中;復(fù)合賦值,其中先執(zhí)行算術(shù)、移位或位運(yùn)算,然后再存儲(chǔ)結(jié)果。下表中除 = 運(yùn)算符之外的所有其他賦值運(yùn)算符都是復(fù)合賦值運(yùn)算符。
賦值運(yùn)算符

運(yùn)算符 含義
= 整型和浮點(diǎn)類型統(tǒng)稱為“算術(shù)”類型。
*= 所有大?。╨ong、short)和枚舉數(shù)的 char 和 int 類型為“整數(shù)”類型。
/= 標(biāo)量操作數(shù)是算術(shù)類型或指針類型的操作數(shù)。
%= 整型和浮點(diǎn)類型統(tǒng)稱為“算術(shù)”類型。
+= 所有大小(long、short)和枚舉數(shù)的 char 和 int 類型為“整數(shù)”類型。
–= 標(biāo)量操作數(shù)是算術(shù)類型或指針類型的操作數(shù)。
<<= 將第一個(gè)操作數(shù)的值按第二個(gè)操作數(shù)的值指定的位數(shù)左移;將結(jié)果存儲(chǔ)在第一個(gè)操作數(shù)指定的對(duì)象中。
>>= 將第一個(gè)操作數(shù)的值按第二個(gè)操作數(shù)的值指定的位數(shù)右移;將結(jié)果存儲(chǔ)在第一個(gè)操作數(shù)指定的對(duì)象中。
&= 獲取第一個(gè)和第二個(gè)操作數(shù)的按位“與”;將結(jié)果存儲(chǔ)在第一個(gè)操作數(shù)指定的對(duì)象中。
^= 獲取第一個(gè)和第二個(gè)操作數(shù)的按位“異或”;將結(jié)果存儲(chǔ)在第一個(gè)操作數(shù)指定的對(duì)象中。
|= 獲取第一個(gè)和第二個(gè)操作數(shù)的按位“與或”;將結(jié)果存儲(chǔ)在第一個(gè)操作數(shù)指定的對(duì)象中。

運(yùn)算符關(guān)鍵字
三個(gè)復(fù)合賦值運(yùn)算符具有文本等效項(xiàng)。它們是:

運(yùn)算符 等效
&= and_eq
|= or_eq
^= xor_eq

在您的程序中有兩種訪問這些運(yùn)算符關(guān)鍵字的方法:包括標(biāo)頭文件 iso646.h 或使用 /Za(禁用語言擴(kuò)展)編譯器選項(xiàng)進(jìn)行編譯。

// expre_Assignment_Operators.cpp
// compile with: /EHsc
// Demonstrate assignment operators
#include <iostream>
using namespace std;
int main() {
  int a = 3, b = 6, c = 10, d = 0xAAAA, e = 0x5555;

  a += b;   // a is 9
  b %= a;   // b is 6
  c >>= 1;   // c is 5
  d |= e;   // Bitwise--d is 0xFFFF

  cout << "a = 3, b = 6, c = 10, d = 0xAAAA, e = 0x5555" << endl
     << "a += b yields " << a << endl
     << "b %= a yields " << b << endl
     << "c >>= 1 yields " << c << endl
     << "d |= e yields " << hex << d << endl;
}

簡(jiǎn)單賦值
簡(jiǎn)單賦值運(yùn)算符 (=) 將使第二個(gè)操作數(shù)的值存儲(chǔ)在第一個(gè)操作數(shù)指定的對(duì)象中。如果兩個(gè)對(duì)象都是算術(shù)類型,則在存儲(chǔ)值之前,正確的操作數(shù)將轉(zhuǎn)換為左側(cè)的類型。
常量和可變類型的對(duì)象可賦給可變類型的左值或者既不是常量類型也不是可變類型的左值。
對(duì)類類型(結(jié)構(gòu)、聯(lián)合和類類型)的對(duì)象的賦值由名為 operator= 的函數(shù)執(zhí)行。此運(yùn)算符函數(shù)值的默認(rèn)行為是執(zhí)行按位復(fù)制;但是,可使用重載運(yùn)算符修改此行為。(有關(guān)詳細(xì)信息,請(qǐng)參閱重載運(yùn)算符。)
任何從給定基類明確派生的類的對(duì)象均可賦給基類的對(duì)象。反之則不然,因?yàn)橛幸粋€(gè)隱式轉(zhuǎn)換,它能從派生類轉(zhuǎn)換到基類,但不能從基類轉(zhuǎn)換到派生類。例如:

// expre_SimpleAssignment.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class ABase
{
public:
  ABase() { cout << "constructing ABase\n"; }
};

class ADerived : public ABase
{
public:
  ADerived() { cout << "constructing ADerived\n"; }
};

int main()
{
  ABase aBase;
  ADerived aDerived;

  aBase = aDerived; // OK
  aDerived = aBase; // C2679
}

對(duì)引用類型的賦值的行為方式就像對(duì)引用所指向的對(duì)象進(jìn)行賦值一樣。
對(duì)于類類型對(duì)象,賦值與初始化不同。若要演示不同賦值和初始化的工作方式,請(qǐng)考慮以下代碼

UserType1 A;
UserType2 B = A;

上面的代碼顯示了一個(gè)初始值設(shè)定項(xiàng);它調(diào)用了采用 UserType2 類型的參數(shù)的 UserType1 的構(gòu)造函數(shù)。給定以下代碼

UserType1 A;
UserType2 B;

B = A;

賦值語句

B = A; 

可能具有以下效果之一:
將為 UserType2 調(diào)用函數(shù) operator=,前提是 operator= 提供 UserType1 參數(shù)。
如果存在顯式轉(zhuǎn)換函數(shù) UserType1::operator UserType2,則調(diào)用該函數(shù)。
調(diào)用采用 UserType2::UserType2 參數(shù)并復(fù)制結(jié)果的構(gòu)造函數(shù) UserType1,前提是存在此類構(gòu)造函數(shù)。
復(fù)合賦值
顯示在的表中的復(fù)合賦值運(yùn)算符以 e1 op= e2 的形式指定,其中 e1 是非常量類型的可修改左值,而 e2 是以下項(xiàng)之一:
算術(shù)類型
指針(如果 op 為 + 或 –)
e1 op= e2 形式的行為方式與 e1 = e1 op e2 的相同,但 e1 只計(jì)算一次。
對(duì)枚舉類型的復(fù)合賦值將生成錯(cuò)誤消息。如果左操作數(shù)屬于指針類型,則右操作數(shù)必須屬于指針類型或必須是計(jì)算結(jié)果為 0 的常量表達(dá)式。如果左操作數(shù)屬于整數(shù)類型,則右操作數(shù)不能屬于指針類型。
賦值運(yùn)算符的結(jié)果
賦值后,賦值運(yùn)算符將返回由左操作數(shù)指定的對(duì)象的值。獲得的類型是左操作數(shù)的類型。賦值表達(dá)式的結(jié)果始終為左值。這些運(yùn)算符具有從右向左的關(guān)聯(lián)性。左操作數(shù)必須為可修改的左值。
在 ANSI C 中,賦值表達(dá)式的結(jié)果不是左值。因此,合法的 C++ 表達(dá)式 (a += b) += c 在 C 中是非法的。

相關(guān)文章

  • C++?LeetCode1769移動(dòng)所有球到每個(gè)盒子最小操作數(shù)示例

    C++?LeetCode1769移動(dòng)所有球到每個(gè)盒子最小操作數(shù)示例

    這篇文章主要為大家介紹了C++?LeetCode1769移動(dòng)所有球到每個(gè)盒子所需最小操作數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • OpenCV+Qt實(shí)現(xiàn)圖像處理操作工具的示例代碼

    OpenCV+Qt實(shí)現(xiàn)圖像處理操作工具的示例代碼

    這篇文章主要介紹了利用OpenCV+Qt實(shí)現(xiàn)圖像處理操作工具,可以實(shí)現(xiàn)雪花屏、高斯模糊、中值濾波、毛玻璃等操作,感興趣的可以了解一下
    2022-08-08
  • C++超詳細(xì)講解泛型

    C++超詳細(xì)講解泛型

    泛型編程,故如其名,是一個(gè)泛化的編程方式。其實(shí)現(xiàn)原理為程序員編寫一個(gè)函數(shù)/類的代碼示例,讓編譯器去填補(bǔ)出不同的函數(shù)實(shí)現(xiàn)
    2022-07-07
  • C++?Cartographer的入口node main詳細(xì)講解

    C++?Cartographer的入口node main詳細(xì)講解

    這篇文章主要介紹了C++Node類Cartographer的入口node main,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-03-03
  • C語言深入淺出分析函數(shù)指針

    C語言深入淺出分析函數(shù)指針

    函數(shù)指針是一個(gè)指針變量,它可以存儲(chǔ)函數(shù)的地址,然后使用函數(shù)指針,下面這篇文章主要給大家介紹了關(guān)于C語言進(jìn)階教程之函數(shù)指針的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Qt實(shí)現(xiàn)實(shí)時(shí)鼠標(biāo)繪制圖形

    Qt實(shí)現(xiàn)實(shí)時(shí)鼠標(biāo)繪制圖形

    這篇文章主要介紹了Qt中QGraphicsView架構(gòu)下如何實(shí)現(xiàn)實(shí)時(shí)鼠標(biāo)繪制圖形,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試
    2022-02-02
  • 利用C語言實(shí)現(xiàn)單詞文本計(jì)數(shù)

    利用C語言實(shí)現(xiàn)單詞文本計(jì)數(shù)

    這篇文章主要為大家詳細(xì)介紹了如何編寫一個(gè)C語言程序,用于統(tǒng)計(jì)一個(gè)文本文件中每個(gè)單詞出現(xiàn)的次數(shù),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • C++使用string的大數(shù)加法運(yùn)算(1)

    C++使用string的大數(shù)加法運(yùn)算(1)

    這篇文章主要為大家詳細(xì)介紹了C++使用string的大數(shù)加法運(yùn)算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • QT實(shí)現(xiàn)用戶登錄注冊(cè)功能

    QT實(shí)現(xiàn)用戶登錄注冊(cè)功能

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)用戶登錄注冊(cè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 一起聊聊C++中的智能指針

    一起聊聊C++中的智能指針

    C++?是手工管理內(nèi)存的分配和釋放,這給了程序員極大的自由度也給了我們極高的門檻,弄不好就得內(nèi)存泄露。使用智能指針能更好的管理堆內(nèi)存,本文主要給大家介紹一下c++的智能指針,需要的朋友可以參考下
    2022-07-07

最新評(píng)論

莆田市| 固原市| 泽库县| 尚志市| 日照市| 新余市| 永丰县| 嘉善县| 天门市| 广平县| 盐池县| 正蓝旗| 乡宁县| 当雄县| 永年县| 漳州市| 承德市| 瓦房店市| 东宁县| 四平市| 上栗县| 图们市| 巴彦淖尔市| 红桥区| 盐池县| 兴义市| 抚州市| 黄石市| 界首市| 曲阳县| 林甸县| 怀宁县| 黄石市| 漯河市| 历史| 吉木乃县| 浙江省| 盱眙县| 武平县| 元氏县| 西昌市|