2 變數 運算子 位運算

2022-09-17 04:36:12 字數 4121 閱讀 2436

數值計算

資料儲存

定義變數 申請儲存空間

資料輸入

數值計算

資料輸出

一、變數

定義變數

訪問變數

變數=記憶體單元

定義變數

資料型別

預定義資料型別

寫入輸入 cin>>ctemp

賦值 ctemp = 36

初始化 int x=10,y;

讀出自動讀取 ftemp =ctemp * 1.8 + 32;

輸出 cout關鍵字

識別符號 字母 數字 下劃線組成,字母和下劃線開頭

語句 分號結束

常量其值不變 資料型別 預設整形/浮點型 32 032 0x32

符號常量

運算子分隔符

三、算數運算

+表示式

運算子、運算元、括號

表示式語句

+運算子

優先順序 結合性

算術運算子

+ - * /

優先順序 1-15

強制型別轉換

double(3)

自定轉換(隱含轉換)

char--unsigned char--shootr--unsigned short -- int --unsigned -- long -- unsigned long -- float -- double

表示式結果:值+型別

括號 () 括號內的優先

其它算術運算子

取餘運算子 %

自增運算子 ++

後置 變數先用再加 優先順序1 結合性從左到右

前置 變數先加再用 優先順序2 結合性從右到左

自減運算子

前、後四、位運算

乙個二進位制位可記錄某種物件的開關狀態

+位反運算子~

~ 0101 0101

= 1010 1010

+位與運算子 &

有0為0,全1為1 檢測是零還是一

+位或運算子 |

全0為0,有1為1 某位置1

+異或運算子 ^

相同為0,不同為1 某位反置

+左移運算子 <<

低位補零

+右移運算子 >>

無符號 高位補零

有符號 最高位補符號位

五、賦值運算

+賦值運算子 =

修改變數的數值

+泛化的運算子 = ++ --

+復合賦值運算子

+= -= *= /= &= |= ^= <<= >>= 優先順序與=一樣

+變數初始化

+常變數

const x=5

使用const關鍵字指定常變數

定義常變數時必須初始化

常變數的值不能改變,例如不能再次被賦值

六、資料的輸入和輸出

+控制台程式

+輸入/輸出流

鍵盤 cin 顯示器 cout

+匯入外部程式

using namespace std;

cin>>變數1>>變數2....>>變數n;

輸入時用空格或tab隔開,回車鍵結束

cout《表示式1《表示式2....《表示式n;

endl表示換行

執行該語句時,計算機首先從右到左順序逐個計算表示式的結果,然後再按從左到右的順序依次顯示各表示式的結果,各顯示結果之間沒有間隔

七、引用與指標

+訪問變數記憶體單位

變數名引用

指標+引用: 變數的別名

公用同一記憶體空間

定義引用變數

引用型別&引用變數名 = 被引用變數名;

引用型別是引用變數的資料型別,必須與被引用變數的型別一致:

&是引用變數說明符。定義變數語句中,變數名前加& 表示該變數為引用變數;

引用變數名需符合識別符號的命名規則

被引用變數名指定被引用的變數,該變數必須是乙個已經定義的變數

定義引用變數時必須初始化,即指定其是哪個變數的引用,引用變數只能因喲給乙個變數,定義後不呢個再引用其他變數

舉例: 定義乙個int型變數x及其因喲個變數xa

int x;int &xa = x;//稱xa是x的乙個引用 int x,&xa = x;//可在一條定義語句中完成 int x,y,&xa = x;//一條定義變數語句可既包括普通變數,又包括引用變數

//鍵盤輸入乙個數值,計算其平方的值

#include usingnamespace std;

int main()

{ int x;

cin>>x;

/*cout

取位址運算子"&"

&變數名

所取出的變數位址是程式執行時該變數所分配記憶體的位址,每次執行程式時,變數不一定會被分配在同一記憶體單元,這取決於本次執行時計算機中哪些記憶體單元是空閒的

乙個變數可能占用多個位元組,變數位址指的是變數所佔記憶體單元第乙個位元組的位址,也稱首位址

取位址運算子是單目運算子,運算元必須是變數,其優先順序為2級,結合性為從右到左;

例:cout定義指標變數

指向型別*指標變數名;

指向型別指定了指標變數能夠儲存哪種型別變數的位址,或者說制訂了指標變數能夠指向哪種型別的變數;

是指標變數說明符,定義變數語句中,變數名前加""表示該變數為指標變數;

指標變數名需符合識別符號的命名規則

例:已定義變數x和y: int x,y;

int *p;//"int *"表示int型指標

//定義乙個int型指標變數p,未初始化,即未指向任何變數

p=&x;//取出變數x的位址並賦值給指標變數p,則p指向變數x

或int *p=&x;//定義乙個int型指標變數p,初始化為指向變數x

p=&y;//區變數y的位址並賦值個指標變數p,則p修改了指向,現指向變數y

+變數的間接訪問

指標運算子"*"

*指標變數名

按照指標變數所儲存的位址訪問所指向的記憶體單元,可寫入或讀出資料

間接訪問之前,指標變數應當指向某個已經存在的變數,即指標變數必須先賦值,再間接訪問,否則將出現錯誤

指標運算子是單目運算子,其優先順序為2級,結合性為從右到左

+注意指標變數應當先賦值,再間接訪問

+指標變數不能用整數來賦值

int *p=10;//錯誤

int *p=0;//賦值為0,表示p不指向任何變數

+指標變數的指向那個型別應當與所指向變數的型別一致

void型別

int x=10;double y=10.5

void p;

p=&x;//正確

cout<

p=&y;//正確

cout<

+相同型別指標變數之間可以相互賦值

int x=10,pi=&x;

double y=10.5,pd=&y;

int *p1;

p1=pi;//正確 指向型別相同 結果p1與pi都指向x

p1=pd;//錯誤 指向型別不同

void *p2;

p2=pi;//正確

p2=pd;//正確

+可以定義指向常變數請的指標,通過該指標變數不呢個修改所指向的常變數的值

const int x=10;

x=15;//錯誤

const int p;//指向常變數的指標

p = &x;

cout<

*p=15;//錯誤 間接修改常變數的值錯誤

int y=20;

p=&y;

cout<

*p=15;//錯誤 不能修改

+可以定義指標型別的常變數(即指標常變數),需定義時初始化,以後不能再改變其指向

int x=10,y=20;

int *const p=&x;

p=&y;//錯誤 不能重新賦值

位運算子,「,」逗號運算子,

位運算子有 按位與 按位或 按位異或 按位取反 優先順序從高到低,依次為 按位與運算有兩種典型用法,一是取乙個位串資訊的某幾位,如以下 擷取x的最低7位 x 0177。二是讓某變數保留某幾位,其餘位置0,如以下 讓x只保留最低6位 x x 077。按位或運算的典型用法是將乙個位串資訊的某幾位置為1。...

運算子之位運算子

右移 負數 無符號右移 或 異或 與 非 說明 位運算子都是作用在二進位製上的 比如 n 50 n 1 結果是多少?100 n 2 結果是多少?200 n 5 結果是多少?1600 為什麼會是這樣的呢?運算的邏輯如下 1,n 50 2,n的二進位制是 0011 0010 3,0011 0010 左移...

ECMAScript 運算子 位運算子

位運算子是在數字底層 即表示數字的 32 個數字 進行操作的 重溫整數 ecmascript 整數有兩種型別,即有符號整數 允許用正數和負數 和無符號整數 只允許用正數 在 ecmascript 中,所有整數字面量預設都是有符號整數,這意味著什麼呢?有符號整數使用 31 位表示整數的數值,用第 32...