記錄自已學習之臨時匿名變數

2021-08-01 03:47:58 字數 862 閱讀 1857

之所以要起這個名字是因為我覺得這個名字是最合適的,臨時變數就是用完就放棄了,它的時期就是在需要用到它的時候就產生,用完了之後它就自已消滅自已。關於什麼時候臨時變數才會產生呢?這就是我這篇博文要說的。

(1)隱含的把一種型別轉化成另外一種型別

比如: int a; float b = 5.0; a = b / 2;

這個式子就是乙個隱含的型別轉換,開始的第一步就是執行b /2,是把2轉換成float,然後第二步就是建立乙個臨時的匿名變數,把上一步式子的值傳遞給這個臨時變數,然後把臨時變數轉換成int型別,再把這個值傳遞給a,最後把這個臨時變數銷毀。這個時候就產生了乙個臨時變數,讓這個接受這個被型別轉換的值,最後才把這個值賦值給被實現初始化的這個變數a。

(2)顯式地把乙個變數轉換成另外一種型別

比如: char a = 'b'; char b = 'c'; int c; c = (int)(a + b);這個式子就是顯式地把乙個字元的數轉換成乙個int(整型)的數,其實這個式子不這樣做它也會隱含的轉換,畢竟型別是有型別提公升這一項的,這裡面其實跟上面的的執行方式沒什麼兩樣,都是通過乙個臨時匿名變數來轉換然後賦值的,只不過這個式子就是顯式的規定了它需要轉換的型別,好讓編譯器知道我是應該想要它以什麼樣的方式去解釋著一塊的記憶體。這個轉化的結果就是你能得出你最想要的那個正確答案。這個式子還可以去證明,只要利用這個sizeof()我們就能證明這個式子是否不用轉換就能把其提公升為整型。就是sizeof(a + b)是否為(64位的機器上)四個位元組就行了。因位char型一般是乙個位元組,所以我們可以這樣來測試。最後我想要把型別的高度表傳上這篇部落格裡面。因位型別的轉換都是依靠這個表來進行轉換的。

記錄自已學習之排序演算法 快速排序

最近因為自已在做乙個小專案,深深的認識到自已的演算法真的是差極了,於是最近就開始看一點關於排序的演算法開始入門。首先第一種就是快速排序,快速排序起名就是源於它比較快的就能得出順序。下面我來說一下快速排序的原理 首先需要選擇乙個數作為對比 一般選擇的是陣列的第乙個數 然後有乙個指向陣列頭的數left,...

記錄自已學習之關鍵字const

最近應該會恢復正常的生活節奏,所以更新部落格可以定時的更新,因為自已的學習可不能落下。這次部落格就來講一下const這個關鍵字 const主要用於在定義的時候給出,用於提醒系統這個變數是唯讀變數,防止這個變數被再次修改。下面我就來介紹它的用途。1 顯示給出定義,用於提醒程式設計師這個值不被修改,給系...

c 陷阱之臨時變數

1.向上強制型別轉化產生臨時變數 include class base void say class drived public base int main 我們開始都會認為在呼叫say 之後,物件d的m b成員變數會被修改為7但是結果卻輸出 1 原因如下 這段 是將物件d的內容拷貝到臨時變數中,並...