C++語言程序設計基礎課程筆記02

剛開始掌握一門語言時,會使用一些基本的類型,進行一些常見的運算,而若是要寫一些算法,好比數字累加和,計算面積,還須要使用到一些循環語句和條件判斷,C++ 都提供了詳細的規範。python

類型

類型系統是語言的基石,C++ 的類型系統包括基本類型和混合類型。嚴格來講,課程中介紹了基本算術類型(arithmetic type),包括浮點類型,整數類型,布爾類型和字符類型。c++

整型細分有不少種,int 是最經常使用的整型,根據長度還分爲 int, short int, long int, long long int, 根據是否有符號,又能夠劃分未 signed int unsigned int 等,所以共計8種類型, 有一些寫法是等價的。算法

image-20200712172741023

浮點類型,主要爲floatdouble long double,浮點都有符號。spa

布爾類型,就是bool設計

字符類型,主要爲char,根據是否有符號,分爲signed charunsigned char ,經常使用的共計兩種,實際上還有寬字符。調試

一般,這些類型的長度在規範裏沒有規定,用 sizeof(類型)能夠計算出來,且知足以下條件:code

1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)

變量

常量 和 變量 有了數據類型以後,就能夠參與運算。變量是能夠發生變化的值,常量是不能夠變化的值。對象

變量須要經過類型 變量名進行聲明,而後 最好進行初始化。例如 :blog

int a;
a = 3;

常量 是直接表示的值,不能夠改變,好比ci

10,0xaa,077  //能夠用多種進制的方式表示證書常量 
3.14 ,0.1E+2  //表示浮點數
true,false //表示bool
'a' 'b' '\n' //表示字符
「abcd" // c風格的字符串常量,隱含'\0'結尾,不推薦

常量也能夠用符號常量來表示,就是給常量一個名稱,方便使用

const double Pi = 3.1415926535;

運算

有了類型和變量,能夠用一些運算符 進行運算,構成表達式或者語句。

和其餘語言基本沒有區別,常見算術運算是加減乘除取餘和賦值,須要注意優先級,記不住優先級有歧義的時候就加括號。

逗號運算,就是把兩個表達式,放在一條語句裏執行,結果是第二個表達式。

a= 1+1,a*3 整個表達式的結果爲6

關係運算,就是比較,邏輯運算,就是 與或非

sizeof運算,是表示某個類型所佔的字節數:

sizeof(int)

運算的時候要注意優先級,和其餘語言差很少。

類型轉換,c++中兩個不一樣類型的變量進行運算時,一般會進行隱式類型的轉換,須要注意反作用。而若是進行顯示類型的轉換,一般有以下寫法:

long b = 10l;
int a = (int) b
int a = int(b)
int a = static_cast<int> b

輸入和輸出

一般瞭解一門新語言,都要學標準輸入和標準輸出。寫一個helloworld。標準輸出能夠用於調試,標準輸入實踐中不太經常使用。C++ 的輸入和輸出是面向對象的設計,把輸入和輸出的來源和目標設計爲對象,經過 對象傳輸數據。其中內置了標準輸入流對象 cin,和標準輸出的流對象 cout ,相似於System.out, System.in 。而且這兩個對象提供了插入操做符<< >>, 輸出對象,並且能夠進行鏈式操做。

cout << 「Hello" << "world";
int a, b;
cin >> a >> b

等價於

System.out.print("Hello");
System.out.print("world");
int a, b;
Scanner scanner = new Scanner(System.in);
a = scanner.nextInt();
b = scanner.nextInt();

條件與循環

ifswitch 時最經常使用的條件語句

if ( a > b) {
    cout << a << endl;
}
switch(a) {
case 1: cout << "1"; break;
case 2: cout << "a"; break;
default:
    cout << "default";
}

經常使用的循環有三種while do while for

int i = 1;
while(i<=10) {
    cout << i << " ";
    i = i + 1;
}
int i = 1;
do {
    cout << i << " ";
    i = i + 1;
} while (i <= 10)
for (int i = 1 ; i <= 10; i++) {
    cout << i << " ";
}

這些循環和判斷之間能夠互相嵌套,經過continue 和 break 能夠控制是否跳出或者繼續循環

類型自定義

使用 typedefusing 能夠自定義類型名稱

typedef int MyInt;
using MyInt = int; 
MyInt a = 10;
MyInt a = MyInt(10);

能夠定義枚舉類型 enum,這個和c 或者 go的從差很少,枚舉中的每一個變量的值是int,會有一個名稱,轉字符串須要手動實現。還有一種限定做用範圍的枚舉(class enum)

enum Weekday {SUN=7,MON=1,TUE,WEB,THU,FRI,SAT};
enum Weekday a = TUE;
cout <<  int(a) << endl;

// 限定做用範圍,使用枚舉的時候要帶上枚舉類的名稱
class enum Weekday {SUN=7,MON=1,TUE,WEB,THU,FRI,SAT};
enum Weekday a = Weekday::TUE;
cout <<  int(a) << endl;

auto 和 decltype 用於支持類型推導,一般咱們說c++是強類型,賦值的時候不能像python同樣自動推導,auto 就能夠根據上下文自動推導類型。而decltype 能夠根據變量類型進行推導。

int a = 1;
int b = 2;
auto  c = a + b; // 那麼c的類型自動爲 int

decltype(c) d; // 那麼d的類型和c同樣

綜上所述,C++ 的基本類型有整型、浮點、布爾和字符,判斷語句if,switch, 循環語句for,while,do while,而且支持枚舉,自動類型(auto),而且可使用內置的cincout 進行輸入和輸出。

相關文章
相關標籤/搜索