c++學習筆記:變數

來源:互聯網
上載者:User

標籤:

c++學習筆記:變數(2)

  先說明一下上一篇博文中的一個問題:char、signed char、unsigned char 這三者到底是怎麼回事。

  signed char與unsigned char 是明確的擁有含義的,也就是說當定義了一個signed char那麼這個char一定是有符號的整數類型。而當定義了一個unsigned char時這個char是明確無符號的整數類型。但是char卻不一定了,它的行為依靠具體的實現。(“普通char究竟是有符號還是無符號,此事由實現確定。這也可能導致出現討厭的,令人詫異的和依賴實現的情況”----斯特勞斯特盧普《c++程式設計語言》)。signed char與unsigned char更加精確但是適用的範圍可能較少。

  一、類型轉換。

  類型轉換是一種絕大多數類型都支援的運算,它的功能就是把一個類型的對象轉換為另一個類型的對象。自動的類型轉換經常發生,但是名字與它相近的“強制類型轉換”就不那麼受歡迎了(設計不良的標誌)。

  常見內建基本類型的類型轉換:1、bool類型轉換為非bool類型,false轉換為0而true轉換為1。但是當轉換方向反過來時,非零值轉換為true而零值轉換為false。 

  2、浮點數轉換為整數時會去掉小數部分,保留整數部分。

  3、把整數賦給浮點數,在整數部分後面補0。

  4、當賦給帶符號數的之超出範圍,行為未定義。

  無符號與帶符號之間的關係:

  從下面的例子看出,int先轉換成了unsigned int了,假設一個值為負數的int轉換為unsigned int時,就要取補碼來解決。

#include<iostream>using namespace std;int main(){    unsigned u=10;    int i=-42;    cout<<i+i<<endl;//-84    cout<<u+i<<endl;//32位下 4294。。。。。   return 0;}

  一個int如何求補碼?比如int -1轉換成unsigned int?首先把-1區絕對值(1)。把1按32位二進位展開 00000000 00000000 00000000 00000001

按位求反 11111111 11111111 11111111 11111110 而後把這個值加1。。。。。。果然大的離譜啊。

  unsigned int 與int之間的微妙關係有時顯得極重要

  一下代碼描述了一個死循,當i=0時在減一。由於i是一個不帶正負號的整數,i被轉換成一個極大的整數,根本停不下來。

#include<iostream>using namespace std;int main(){    for(unsigned i=10;i>=0;--i)    {        /*.......*/    }}

二、字面值(文字值)常量

  何謂字面值(文字值)?如果一個值“一望便知”,那它就是一個字面值常量。

  整數與浮點數字面值:20(十進位)、o24(八進位)、0x24(十六進位)

3.14、3.14E0、0.、0e0、.001都是合法的常量。

  字元與字串字面值常量:‘a’這就是字元字面值常量。而“asdfg”就是字串字面值常量,字串字面值常量的更多內容之後會介紹。

  逸出序列:查看ASCII碼錶,會發現有一些不可列印的字元比如“退格”他們沒有可視圖符。而另一類就是“逸出序列”。逸出序列有\n(換行)、\t(水平定位字元)等等。它們均以“\”開頭,兩個被當成一個字元。具體的意義可以查閱ASCII碼錶。需要注意的是"\"後面還可以接以x開頭的十六進位數字或最多三個的八位元字。\n為分行符號\12同樣是分行符號。

  bool字面值:true與false就是它的字面值。

  指標字面值(稍後會說)。

注意:關於求補碼的問題可以查閱相關資料,資料會講解不同數制的補碼求法。

  

    

  

  

c++學習筆記:變數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.