1. 程式人生 > >左值和右值的區別(以a++和++a為例)

左值和右值的區別(以a++和++a為例)

左值(lvalue)和右值(rvalue)最先來源於編譯。在C語言中表示位於賦值運算子兩側的兩個值,左邊的就叫左值,右邊的就叫右值。
定義:
左值指的是如果一個表示式可以引用到某一個物件,並且這個物件是一塊記憶體空間且可以被檢查和儲存,那麼這個表示式就可以作為一個左值。
右值指的是引用了一個儲存在某個記憶體地址裡的資料。
從上面的兩個定義可以看出,左值其實要引用一個物件,而一個物件在我們的程式中又肯定有一個名字或者可以通過一個名字訪問到,所以左值又可以歸納為:左值表示程式中必須有一個特定的名字引用到這個值。而右值引用的是地址裡的內容,所以右值又可以歸納為:右值表示程式中沒有一個特定的名字引用到這個值。

++a的話因為返回結果和運算之後的a一樣,所以++a返回的是真實的a,可以被重新賦值,所以可以作為左值。而a++返回的是運算之前的a,而此時a已經+1了,返回的資料其實是過去的a,它是另外複製出來的,而不是真正的a,所以無法被賦值,所以它只能是右值。

所以a++;在執行當中的順序是,先把a的值複製出來,進行整體運算,然後再a=a+1。

inti=0;
i++=3;
cout<<i<<endl;(i此時為3)
++i=3;(錯誤)

相關推薦

flatmapmap的區別Spark的WordCount

/* wordcount.txt 張三 李四 王五 趙六 張三 張三 */ val rdd = sc.textFile("wordcount.txt") .flatMap(x=>x.split(" ")) .map

粗粒度細粒度的區別Spark on Mesos

(1)粗粒度模式(Coarse-grained Mode):每個應用程式的執行環境由一個Dirver和若干個Executor組成,其中,每個Executor佔用若干資源,內部可執行多個Task(對應多少個“slot”)。應用程式的各個任務正式執行之前,需要將執行環境中的資源全部申請好,且執行過程中要一直佔用這

Ubuntu中安裝配置 Java JDK,並解除安裝自帶OpenJDKUbuntu 12.04

1.下載jdk-7u25-linux-i586.tar.gz 2.修改jdk-7u25-linux-i586.tar.gz的可執行許可權,最簡單的方法是賦予許可權,即: chmod 755 jdk

前向傳播反向傳播簡單神經網路

在神經網路模型中包括前向傳播和反向傳播那麼究竟什麼是前向傳播,什麼是反向傳播呢前向傳播:說的通俗一點就是從輸入到得到損失值的過程,當然不僅僅是這麼簡單,中間還經過了一些處理,那麼這些處理包括什麼呢:1:從輸入層開始:假設是一個形狀是(2,3)2:經過權重引數(w(3,取決你的

六種姿勢拿下連續子序列最大問題,附虛擬碼HDU 1003 1231

問題描述:       連續子序列最大和,其實就是求一個序列中連續的子序列中元素和最大的那個。       比如例如給定序列:            { -2, 11, -4, 13, -5, -2 }         其最大連續子序列為{ 11, -4, 13 },最大和

關於端口被占用的問題61440端口

internet 其他 直接 按鍵 str es2017 查看 window 原因   先來說一下寫這篇blog的原因吧,本人今天下午回到宿舍打開電腦準備上網下載開發Python的環境,結果發現下載速度和以前相比是大大的不如。然後看了一下室友的網絡一切ok,然後我突然只能登

當你輸入一個網址/點擊一個鏈接,發生了什麽?www.baidu.com

var aid 查找 style str 在服務器 開始 傳輸 http響應 >>>點擊網址後,應用層的DNS協議會將網址解析為IP地址; DNS查找過程: 瀏覽器會檢查緩存中有沒有這個域名對應的解析過的IP地址,如果緩存中有,這個解析過程就將結束。 如果

使用Altium Designer10軟件繪制芯片引腳圖IC1114芯片

name 類型 對話 圖1 菜單欄 參數設置 計算 sch 位置 運用Altium Designer軟件繪制IC1114-F48LQ芯片的原理圖庫,詳細步驟如下: 第一步:在“文檔”裏新建一個文件夾,命名為“電子產品創新設計源文件”,用以存放每次實驗的源文件和原理圖庫文件等

Python——爬取人口遷徙數據騰訊遷徙

map car img all spa ima tps .sh compile 說明: 1.遷徙量是騰訊修改後的數值,無法確認真實性。 2.代碼運行期間,騰訊遷徙未設置IP屏蔽和瀏覽器檢測,因此下段代碼僅能保證發布近期有效。 3.代碼功能:爬取指定一天的四十個城市左右的遷徙

Qt的網絡通信一對一聊天室

lis sci idg ESS host 文字 btn stdstring nec 一、以一對一(服務器,客戶端)為例   1、服務器:      1、在目錄文件 .pro文件中   QT += core gui network 添加network      

統計學習三:2.K近鄰法代碼實現最近鄰法

數據集 learning pytho port 4.3 @property 存儲 uil github 通過上文可知感知機模型的基本原理,以及算法的具體流程。本文實現了感知機模型算法的原始形式,通過對算法的具體實現,我們可以對算法有進一步的了解。具體代碼可以在我的githu

【C語言】位元組對齊問題32位系統

  1. 什麼是對齊?   現代計算機中記憶體空間都是按照位元組(byte)劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何地址開始,但實際情況是在訪問特定變數的時候經常在特定的記憶體地址訪問,這就需要各型別資料按照一定的規則在空間上排列,而不是順序地一個接一個地排放,這就是對齊

Tensorflow之多元線性迴歸問題波士頓房價預測

一、根據波士頓房價資訊進行預測,多元線性迴歸+特徵資料歸一化 #讀取資料 %matplotlib notebook import tensorflow as tf import matplotlib.pyplot as plt import numpy as np

基於GDAL庫,讀取.grd檔案海洋地形資料C++版

技術背景   海洋地形資料主要是通過美國全球地形起伏資料(GMT)獲得,資料格式為grd(GSBG)二進位制資料,開啟軟體通過是Surfer軟體,surfer軟體可進行資料的編輯處理,以及進一步的視覺化表達等功能操作;由於Surfer軟體不支援二次開發,沒有提供相應的SDK供開發者進行使用,所以這一切只能通

詳解如何用爬蟲採集視訊播放量資料騰訊視訊

現代社會提到大資料大家都知道這是近幾年才形成的對於資料相關的新名詞,在1980年,著名未來學家阿爾文·托夫勒便在 《第三次浪潮》一書中,將大資料熱情地讚頌為“第三次浪潮的 華彩樂章”。在 20 世紀 80 年代我國已經有一些專家學者談到了海量資料的加工和管理,但是由於計算機技術和網路技術的限制大資料

在大資料浪潮下如何高效的獲取跨境電商銷售資料亞馬遜

隨著傳統外貿渠道的疲態,跨境電商現在發展異常火爆,跨境電商未來很有可能成為主流的外貿出口模式,並且成為推動中國外貿經濟的一個重要的突破口。跨境電商主要分跨境進口和跨境出口,主流的跨境電商平臺各有特點。 亞馬遜公司作為美國最大的一家網路電子商務公司,是網路上最早開始經營電子商務的公司之一,已成為全

3. CKeditor+ckfinder ---CKFinder原始碼修改上傳 自定義資料夾名時間年月YYYYMM

1 準備 請自行參考  第2文章  此處就不做過多解釋了 ^_^     2. CKeditor+ckfinder ---CKFinder原始碼修改自定義上傳檔名,連結如下 修改上傳檔名 2  查詢官網資料 連結如下

idea給現有web專案建立子maven web模組專案--搭建流程淘淘商城

maven  web專案主要搭建流程: 1、用任意Java開發工具ide中maven外掛(或其他外掛)建立父子web專案骨架 2、完善web專案的目錄結構(如果以下骨架已自動建好,忽略此步驟)         src/main/java       src/main/

Ubuntu下如何安裝第三方輸入法!搜狗輸入法

其實很簡單,就是: 百度”搜狗輸入法 Ubuntu“,下載,安裝,重啟。 這麼簡單,為什麼還要寫這篇文章呢? 因為你不懂的話,你就回去百度搜索這個問題,然後別人就教你如何設定預設的輸入法, 至少浪費十幾分鍾。其實重啟一下就可以了。

Docker映象製作使用操作流程bcc-explorer專案

Docker映象製作使用流程(以bcc-explorer專案為例) bcc-explorer專案是最近實習時做的一個專案,這裡只是用來舉例說明docker的用法,具體專案內容不是重點。 1 編寫dockerfile檔案 1) 進入bitcore-node