《c++入門經典》筆記3

《c++入門經典》筆記3

第三章 建立變量和常量

3.1變量是什麼

變量是計算機內存中的一個位置,您能夠在這裏存儲和檢索值。變量有地址,並賦予了描述其用途的名稱。ios

例如int zombies = 2;其中zombies是變量名,2是其存儲的變量值,可是它可能被放在了內存中的第101~104塊,那麼它的地址就是101~104(實際可能只顯示頭部地址)c++

 

c++建立變量時,須指定變量名稱和類型,好比int a;,數據類型用於指定變量所佔用的最大空間(單位爲字節)函數

基本數據類型:(因操做系統平臺不一樣,長度可能會有所不一樣)spa

類型 長度(字節數) 取值範圍
unsigned short 2 0~65 535
short 2 -32 768~32 767
unsigned long 4 0~4 294 967 295
long 4 -2 147 483 648~2 147 483 647
int 4 -2 147 483 648~2 147 483 647
unsigned int 4 0~4 294 967 295
long long int 8 -9.2x1018 ~9.2x1018
char 1 256個字符
bool 1 true或false
float 4 1.2e-38~3.4e38
double 8 2.2e-308~1.8e308

其中須注意的是無符號數的長度雖然與有符號數的相同,可是從0開始操作系統

最特殊的是浮點數,浮點數的制定與其餘的不一樣,它是依據IEEE754標準制定的,浮點表示法應該是一個programer掌握的最基本知識(之後會有深刻理解計算機系統筆記,到時候會再行說明)code

固然,c++也支持用戶自定義的變量類型,好比用戶定義的類或結構體。內存

要獲取變量類型的長度,可以使用sizeof()函數編譯器

 

程序清單3.1 Size.cppstring

#include<iostream>
int main(){
   std::cout<<"The size of an integer:\t\t";
   std::cout<<sizeof(int)<<" bytes\n";
   std::cout<<"The size of a short integer:\t";
   std::cout<<sizeof(short)<<" bytes\n";
   std::cout<<"The size of a long integer:\t";
   std::cout<<sizeof(long)<<" bytes\n";
   std::cout<<"The size of a character:\t";
   std::cout<<sizeof(char)<<" bytes\n";
   std::cout<<"The size of a boolean:\t\t";
   std::cout<<sizeof(bool)<<" bytes\n";
   std::cout<<"The size of a float:\t\t";
   std::cout<<sizeof(float)<<" bytes\n";
   std::cout<<"The size of a double float:\t\t";
   std::cout<<sizeof(double)<<" bytes\n";
   std::cout<<"The size of a long long int:\t\t";
   std::cout<<sizeof(long long int)<<" bytes\n";
}

 

3.2定義變量

駝峯命名法:it

對變量命名使用小駝峯命名法(首單詞小寫,其他單詞首字母大寫),如:newWroldRecord

對類名,名稱空間使用大駝峯命名法(單詞首字母均大寫),如:DataBaseManager

除了駝峯命名法以外,沒啥可記錄的了。

 

3.3給變量賦值

賦值運算符: =

 

程序清單3.2 Rectangle.cpp

#include <iostream>

int main()
{
   unsigned short width = 26, length;
   length = 40;
   unsigned short area = width * length;
   std::cout << "Width: " << width << "\n";
   std::cout << "Length: " << length << "\n";
   std::cout << "Area: " << area << "\n";
   return 0;
}

 

3.4類型定義

類型定義關鍵字:typedef

 

程序清單3.3 NewRectangle.cpp

#include <iostream>

int main()
{
   typedef unsigned short USHORT;
   USHORT width = 26;
   USHORT length = 40;
   USHORT area = width * length;
   std::cout << "Width: " << width << "\n";
   std::cout << "Length: " << length << "\n";
   std::cout << "Area: " << area << "\n";
   return 0;
}

 

3.5常量

常量值不會改變,且必須在建立常量時對其進行初始化。c++支持兩種類型的常量:字面常量與符號常量

字面常量是直接在須要的地方輸入的值

好比:long width = 19;中,19就是字面常量,true與false也是字面常量。

符號常量是用名稱表示的常量,與變量類型類似。聲明符號常量時,須要使用關鍵字const,並在後面跟類型、名稱和初值。

好比:const int KILL_BONUS = 5000;

也可定義常量,如:#define KILLBONUS 5000,因爲這種c式定義法沒有指定類型,編譯器沒法確保其值是合適的,因此建議採用const關鍵字,而非使用編譯指令進行常量定義。

 

枚舉常量是在一條語句中建立一組常量,使用關鍵字enum定義,枚舉值放在大括號裏,之間逗號進行分隔。

好比:enmu Color {RED=100,BLUE,GREEN=500,WHITE,BLACK=700};

 

程序清單3.4 Compass.cpp

#include <iostream>

int main()
{
   enum Direction
  {
       North,
       Northeast,
       East,
       Southeast,
       South,
       Southwest,
       West,
       Northwest
  };
   Direction heading;
   heading = Southeast;
   std::cout << "Moving " << heading << std::endl;
   return 0;
}

這裏的輸出結果是moving 3,緣由是若是不進行顯式初始化枚舉常量,則枚舉值從North開始默認爲0,而後遞增。

 

3.6自動變量

c++有一個關鍵字auto,可用於根據賦給變量的初值推斷出變量的類型,該工做由編譯器完成。

 

好比:auto rate=500/3.0等價於double rate=500/3.0

 

程序清單3.5 Combat.cpp

#include <iostream>

int main()
{
   auto strength = 80;
   auto accuracy = 45.5;
   auto dexterity = 24.0;

   const auto MAXIMUM = 50;

   auto attack = strength * (accuracy/MAXIMUM);
   auto damage = strength * (dexterity/MAXIMUM);
   std::cout<<"\nAttack rating: "<<attack<<"\n";
   std::cout<<"Damage rating: "<<damage<<"\n";

   return 0;
}

結果是:

Attack rating: 72.8 Damage rating: 38.4

 

若是上面這個程序您的編譯器發出報錯或警告,多是您的編譯器默認編譯的c++版本在14如下,則使用如下編譯命令嘗試讓編譯器選擇使用c++14進行編譯:

g++ -std=c++14 Combat.cpp -o Combat.exe

(Linux下大同小異)

相關文章
相關標籤/搜索