1. 程式人生 > >前增量與後增量的區別

前增量與後增量的區別

效率比較:前增量效率高,後增量要建立一個臨時物件。

  使用前增量時,對物件(運算元)進行增量修改,然後再返回該物件.所以前增量運算子操作時,引數與返回的是同一個物件.著與基本資料型別的前增量操作相似,返回的也是左值.  
  使用後增量時,必須在增量之前返回原有的物件值.為此,需要建立一個臨時物件,存放原有的物件,以便對運算元(物件)進行增量修改時,儲存最初的值.後增量操作返回的是原有物件的值,不是原有物件,原有物件已被增量修改,所以返回的應該是存放原有物件值的臨時物件.  

   int i = 1;
 int x;
 x = i++;//操作為:x=i;i=i+1;
 
 cout<<"後增量"<<" "<<i<<" "<<x<<endl;//後增量,輸出為:x=1,i=2

 int m = 1;
 int y;
 y = ++m;//操作為:m=m+1;y=m;
 
 cout<<"前增量"<<" "<<m<<" "<<y<<endl;//前增量,輸出為:M=2,Y=2

#include<iostream.h>
void main()
{
 int a=0,b=4,c=1;
 a = (c+++b);
 //++(c= a++);
 //++(++a);
 cout<<a<<endl<<b<<endl<<c;//輸出為 5 4 2
}

相當於int x=c;//建立一個臨時物件存放原有物件

++c;

a= (x+b);

相關推薦

增量增量區別

效率比較:前增量效率高,後增量要建立一個臨時物件。   使用前增量時,對物件(運算元)進行增量修改,然後再返回該物件.所以前增量運算子操作時,引數與返回的是同一個物件.著與基本資料型別的前增量操作相似,返回的也是左值.     使用後增量時,必須在增量之前返回原有的物件值.

關於增量增量的認識誤區

i++ ++i 前增量 後增量大學時老師講C++時說過, x=i++; 與 x=++i 的區別當時以為很懂了,一個是後增量,一個是前增量x= i++; 相當於 x=i ; i=i+1;x=++i ; 相當於 i=i+1; x=i ; 並對這種解釋深信不疑。近日 微信群看到一則題目,甚是困惑,

C++ 變數“++”++”的區別

問題描述 我們在使用迴圈遍歷容器時,經常會看到一個自增/自減的表示式,比如:i++、++i、--i、++i。我們在書本上比較常見的就是++i,那麼到底 i++ 與 ++i有什麼區別呢? 區別1 書本上解釋的表示式方式區別:i++是先取變數i,再將變數i值+1;而++i是先將變數i值+

equals方法中變量在和在區別

ase ole 三元 返回 大小寫 工具 != 方法 三元表達式 對於變量:String str1; 使用str1.equals("null"); 對於變量str1,如果str1是null,空是沒有equals方法的,會拋出空指針異常 使用"null".equals(str

自增自增到底啥區別

前自增操作:該操作使其運算元加1,操作結果是修改後的值。 後自增操作:同樣對其運算元加 1(或減 1),但操作後產生運算元原來的、未修改的值作為表示式的結果。 前置操作返回加1後的值,所以返回物件本身,這是左值。而後置操作返回的則是右值。 前自增: int i = 0,

中序序或者序都可以確定一顆二叉樹 一點點dfs

順序 訪問 原理 二叉 後序 左右 如果 信息 搜索 中序與後序或者前序都可以確定一顆二叉樹原理: 中序是 訪問順序是左子樹 根 右子樹 後續是 左子樹 右子樹 根 所以一棵二叉樹如果給了後續的信息 可以把樹根確定下來 帶入中序的信息中 找出左右子樹 再帶

[leetcode]從中序序/序遍歷序列構造二叉樹

nod leetcode int 構造二叉樹 else begin 順序 strong 分割 從中序與後序遍歷序列構造二叉樹 根據一棵樹的中序遍歷與後序遍歷構造二叉樹。 註意: 你可以假設樹中沒有重復的元素。 例如,給出 中序遍歷 inorder = [9,3,15,20,

端面試題之cookiesstorage的區別

前端面試題之cookies與storage的區別 共同點:都是儲存在瀏覽器端,且同源的。 區別: cookies每次傳送請求都會被攜帶,會造成頻寬浪費,storage則不會,儲存在本地 cookies的大小和數量都有限制,大小一般在4K左右,storage達到5M或者更

Oracle資料庫備份恢復 - 增量備份

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

程式設計基礎76 已知序,序和層序遍歷序列中序遍歷序列組合得到樹的方法

#include<cstdio> #include<queue> using namespace std; const int max_n = 50; int N = 0; int level[max_n]; int in[max_n]; int post[max_n]; b

在JavaScript中,++在和++在有什麼區別

一、 ++可以與輸出語句寫在一起,++寫在變數前和寫在變數後不是一個意思 ++ i 和 i ++ 區別在於運算順序和結合方向。 在JavaScript中有兩種自加運算,其運算子均為 ++,功能為將運算子自加 1。 其中: ++ VAR 被稱為前自加,其後面的變數

資料結構—連結串列的插法插法

在進行單鏈表的基本運算之前必須先建立單鏈表,建立單鏈表的常用方法有兩種:頭插法建表和尾插法建表 頭插法建表,從一個空表開始,讀取字元陣列a中的字元,生成新節點,將讀取的資料存放到新節點的資料域中,然後將新節點插入到當前連結串列的表頭上,直到讀完字元陣列a的所有元

多感測器融合技術(基本概念、融合和融合的區別

多感測器資訊融合(Multi-sensor Information Fusion,MSIF),就是利用計算機技術將來自多感測器或多源的資訊和資料,在一定的準則下加以自動分析和綜合,以完成所需要的

二叉樹非遞迴序建立序遍歷

建立過程:通過棧來模擬遞迴建立。先將根壓入棧中,然後不斷的加左子樹,遇到空則加右子樹;在開始不斷的加左子樹...一直                     重複下去直到讀取到回車。(建立時

前端渲染端渲染的區別

前端渲染: 指的是後端返回JSON資料,前端利用預先寫的html模板,迴圈讀取JSON資料,拼接字串(es6的模板字串特性大大減少了拼接字串的的成本),並插入頁面。 好處:網路傳輸資料量小。不佔

CNN 簡史 Keras 增量實現(一)—— Softmax 分類器

準備知識 資料庫 我們基於幾個基本資料庫來驗證演算法:MNIST 手寫字型資料集,CIFAR10 與 CIFAR100 影象分類資料集。 使用 keras 的 datasets 模組來方便地匯入資料庫: from keras.datasets im

Python----使用正則re查詢文字中特定中文字串,去除重複的資料,取有某個特定字串的幾位幾位數據(適應web回包查詢)

Python----使用正則re查詢文字中特定中文字串例子1:指令碼檔案[email protected]:~/python/dinpay# cat t.py #coding:utf-8 import re source = "s2f程式設計師雜誌一2d3程式

String、StringBufferStringBuilder之間區別 以及String 直接賦值和new賦值區別

   這裡是引用他人程式碼: 最近學習到StringBuffer,心中有好些疑問,搜尋了一些關於String,StringBuffer,StringBuilder的東西,現在整理一下。 關於這三個類在字串處理中的位置不言而喻,那麼他們到底有什麼優缺點,到底什麼時候該用誰呢

c++ 前置++置++的區別

  用C++程式設計的都知道,C++提供了一個非常強大的操作符過載機制,利用操作符過載,我們可以為我們自定義的類增加更多非常有用的功能。不過,C++也有限制,就是當我們為自定義的類過載操作符時,過載操作符的含義應該跟內建型別一樣,比如,你不能通過過載+號操作符來實現兩個數相乘的運算,實現需要是兩個數相加的運算

web前端端的區別

Internet採用超文字和超媒體的資訊組織方式,將資訊的連結擴充套件到整個Internet上。Web就是一種超文字資訊系統,Web的一個主要的概念就是超文字連線,它使得文字不再象一本書一樣是固定的線性的。而是可以從一個位置跳到另外的位置。可以從中獲取更多的資訊。可以轉到別的主題上。想要了解某一個主題的內容只