目錄
- C++與C簡單關系
- 面對物件的四大特性
- 抽象
- 封裝
- 繼承
- 多型
- 資料型別與資料結構
- 數制
- C++中的資料型別
- 常量
- 浮點數的運算
- 布爾型(bool)/邏輯型資料及其運算
- 變數
- C++的輸入和輸出
- 短路求值
C++與C簡單關系
? C++是對C一定上的“增強”,
? 用C語言寫的程式基本上可以無縫接入C++運行,
?C語言主要是面對程序的程式設計,而C++既可以用于面向程序的結構化程式設計,又可以用于面向物件的程式設計,是一種功能強大的混合型的程式設計語言,
面對物件的四大特性
抽象
資料抽象–>表示世界中一類事物的特性,就是物件的屬性,比如鳥有翅膀,羽毛等(也可稱為類的屬性)
程序抽象–>表示世界中一類事物的行為,就是物件的行為,比如鳥會飛行,會叫等(也可稱為類的方法)
封裝
封裝就是把程序和資料打包起來,對資料的訪問只能通過已定義的界面,比如汽車就是對制動系統、止動系統、回圈系統等的封裝,
繼承
一種聯結類的層次模型,并允許和鼓勵類的重用,提供一種明確的表達共性的方法,比如小轎車和大貨車都是屬于上述的汽車類,并擁有制動系統和止動系統等,繼承了汽車的一部分特性,而小汽車和大貨車又存在不同的地方,
可以想到,在寫一些比較大的專案時,我們可以利用繼承的思想,減少一些作業量,
多型
多型是允許不同類的物件對同一訊息做出回應,比如,對貓和狗發出指令讓它們叫一聲,得到的回應是“喵喵”和“汪汪”,
資料型別與資料結構
計算機處理的物件是資料,而資料以某種特定的形式存在(例如整點、浮點數、字符等形式),
具有相同特征的一類資料概況為一種資料型別,
不同的資料之間往往還存在某些聯系,形成某種資料結構,
C++的資料包括常量與變數,常量與變數都具有型別,
數制
二進制是Binary,簡寫為B,
八進制是Octal,簡寫為O,
十進制為Decimal,簡寫為D,
十六進制為Hexadecimal,簡寫為H,
#include <bitset>
#include<iostream>
using namespace std;
int main()
{
cout << "35的8進制:" << std::oct << 35<< endl;
cout << "35的10進制" << std::dec << 35 << endl;
cout << "35的16進制:" << std::hex << 35 << endl;
cout << "35的2進制: " << bitset<8>(35) << endl; //<8>:表示保留8位輸出
return 0;
}
//來源于https://www.cnblogs.com/zwjjj/p/9953718.html
C++中的資料型別

常量
字面意思,常量的值是不能改變的,
常量的兩大類:
(1)數值型常量(即常數)
1,-3,0L,020,0289H等——整形常量
2.3 、-2.12f、2.e2——實型常量
(2)字符型常量
‘c’ 、‘2’、‘\n’——包含在兩個單撇號之間的字符為字符常量,
浮點數的運算
#include <iostream>
using namespace std;
int main()
{
float a = 0.5f;
float b = 0.25f;
float c = a - b;
if (c==0.25)
cout<<"對了!"<<endl;
else
cout<<"錯了!"<<endl;
return 0;
}
//輸出結果:對了!
#include <iostream>
using namespace std;
int main()
{
float a = 0.65f;
float b = 0.6f;
float c = a - b;
if (c==0.05)
cout<<"對了!"<<endl;
else
cout<<"錯了!"<<endl;
return 0;
}
//輸出結果:錯了!
為什么會出現這樣的結果呢?
因為計算機所有資料都是基于二進制轉化而來的,0.25可以轉二進制,而0.05無法用二進制表示,
注釋:0.05也能轉二進制,但得看精度,能轉成7位或8位的,超出float范圍,
二進制里的 0.1 = 1/2 =0.5
二進制里的 0.01 = 1/4 = 0.25
二進制里的 0.001 = 1/8 = 0.125
依次類推,每小數點后多一個零,分母多除以2(因為是二進制)
如果是 0.111= 1/2 + 1/4 + 1/8 =0.825
這樣就可以知道 0.05 = 1/20,
0.0001 = 1/16 明顯比 1/20 要大,所以我們取0.00001 = 1/32 =0.3125
這樣還不夠, 再繼續加 0.000011= 1/32 + 1/64 =0.046875 ,這也顯然不夠,再繼續,所以最的結果為 0.05 = 0.00001101 = 0.05075 (注意這是約等于), 如果想更精確一點,還可以繼續往下做,直到到取到一個盡可以接盡的值為止,
布爾型(bool)/邏輯型資料及其運算
C和C++中都用數值1表示“真”,用數值0表示“假”,
C++增加了邏輯型資料型別:bool型
邏輯型常量只有兩個,即false(假)和true(真)
bool found,flag=false;
found=true;
邏輯型使程式直觀易懂
在編譯系統處理邏輯型資料時,將false處理為0,將true處理為1,
在實際中,非0被視為“真”,0被視為“假”
邏輯型資料可以與數值型資料進行算術運算
邏輯運算的規則照舊
變數
變數的定義
在程式運行期間其值可以改變的量稱為變數,
一個變數,在記憶體中占據一定的存盤單元,
變數的要素:變數名、變數值

資料型別 變數名1,變數名2,,,,變數名n
變數的初始化
復制初始化:int val=100;
直接初始化:int val(100);
二者區別可以參考一篇優秀的博文:
拷貝初始化和直接初始化的區別
C++的輸入和輸出
C++的輸入和輸出用“流”(stream)的方式實作,

流物件cin、cout和流運算子的定義存放在C++的輸入輸出流庫iostream中;cout、cin并不是C++本身提供的陳述句,運算子<<和>>也不是C++本身提供的運算子 要在程式中使用cin、cout和流運算子,必須先: #include
格式:
cout<<運算式1<<運算式2<<……<<運算式n;
cin>>變數1>>變數2>>……>>變數n
插入運算子<<和提取運算子>>的優先級與結合性?
int a=1,b=4,c=8;
cout<<a,b,c; //輸出1
cout<<a,b,c<<endl; //出錯,如何理解?
cout<<a+b+c<<endl; //輸出13
可以參考一下
C++優先級
cin和>>
cin不會讀入空格、回車,將其當分隔符
cout和<<
用cout輸出時,系統會自動判別輸出資料的型別,使輸出的資料按相應的型別輸出,
在必要時,一條陳述句中多個資料輸出合理分隔,
int a=4;
float b=345.7888435;
char c='a';
cout<<a<<'\t'<<b<<' '<<c<<endl;
輸出形式
4 345.789 a
輸出格式可以有自己去控制更改
目標:輸入輸出時滿足一些特殊的要求
?規定欄位寬度
?保留的小數位數
?資料向左或向右對齊等,
方法:使用輸入輸出流中的控制符
?設定數值的基數(8,10,16)
?設定填充
?設定精度
?設定對齊
?設定其他方式
#include <iostream>
#include <iomanip> //不要忘記包含此頭檔案
using namespace std;
int main()
{
double d=225.0/7.0;
cout<<"d="<<d<<endl;
cout<<setiosflags(ios::fixed);
cout<<"d="<<setprecision(5)<<d<<endl;
cout<<"d="<<setprecision(2)<<d<<endl;
return 0;
}
輸出結果:
d=32.1429
d=32.14286
d=32.14
可以參考一下:
簡單的I/O流格式控制
短路求值
定義:所謂短路求值是指當使用邏輯與(&&)和邏輯或(||)運算子進行運算式求值時,總是先計算其左運算元,然后再計算其右運算元,只有在僅靠左運算元的值無法確定整個邏輯運算式的值時,才會計算其右運算元
#include <iostream>
using namespace std;
int main()
{
int a=3,b=3;
(a=0)&&(b=5);
cout<<a<<b<<endl;
(a=1)||(b=5);
cout<<a<<b<<endl;
}
運行結果:

為什么會輸出這樣的結果呢?
&&(與)
a=0為假,故沒有對b進行操作;
a=1為真,故沒有對b進行操作,
ps:復習用,如有錯誤請指正
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286589.html
標籤:其他
上一篇:Python|冒泡演算法快速入門
下一篇:C語言解題:求兩矩形公共面積
