CPL學習筆記(一)

2022-03-04 10:07:24 字數 4052 閱讀 1157

計算機的記憶體的基本單位是位(bit),可以將其看作電子開關,可以開,表示1;也可以關表示0。

位元組(byte)通常指八位的記憶體單元。

8bit=1byte=1b;

1kb=1024b;

1m=1024kb;

1g=1024m;

1t=1024g;

如果在考場上忘記了資料型別的範圍或位元組數,莫著急,c++的特技就是為了解決此問題的。

常用函式:n_max,n_min.(n代表資料型別)

秒懂**:

#include#include#includeusing namespace std;

int main()

輸出結果也是一目了然:

short is 2 byte

int is 4 byte

long is 4 byte

long long is 8 byte

maximum:

short: 32767

int: 2147483647

long: 2147483647

long long: 9223372036854775807

minimum:

short: -32768

int: -2147483648

long: -2147483648

long long: -9223372036854775808

--------------------------------

process exited after 0.1151 seconds with return value 0

請按任意鍵繼續. . .

該方法適用於所有整型。

值得一提的是,char也是整型的一種,char_max=127;

這就提醒我們:char型別的加減法一定要小心,a的ascll碼為97,也就是說兩個值為『a』的char型別相加就會出錯。。。

for_example:

cout<<(char)('a'+'a');

我們也許會認為這行**會輸出ascll碼為194的字元,其實不然,這句**是錯誤的,它什麼也不會輸出。

有一種方法可以不完全的解決這個問題:unsigned char(範圍0~255)

資料型別的溢位
int intmax=int_max;

int intmin=int_max;

cout<" "<1;

cout<" "<-1;

return 0;

既然是資料型別的最大值,intmax+1應該不會大於2147483647,同理,intmin-1也應該不會小於-2147483648,不錯,就是這樣。

2147483647 -2147483648

-2147483648 2147483647

意想不到的是,intmax+1竟然=int_min,這就是上溢現象。這種現象不好解釋,但是一張就能將其描述清楚。

整型字面值

c++能用三種不同的計數方式來書寫整數,基數為10、基數為8、基數為16.

c++使用前一位或二位來標識數字常量的基數。

case 1:第一位為1~9,基數為10(十進位制)。

case 2:第一位為0,第二位為1~7,基數為8(八進位制)。

case 3: 前二位為0x或0x,則基數為16(十六進製制)。

秒懂**:

#includeusing namespace std;

int main()

下附輸出:

042 八進位制轉十進位制:34

42 十進位制:42

0x42十六進製制轉十進位制:66

--------------------------------

process exited after 0.0688 seconds with return value 0

請按任意鍵繼續. . .

也就是說加上特殊標記後,我們可以直接儲存十六/八進位制數,但輸出時預設轉為十進位制。如果我們希望直接輸出十六/八進位制數,該怎麼辦呢?

方法是有的,十六/八進位制可是屬於c++的計數方式,after all.於是乎,cout裝備了一些c++的特技:

直接貼**:

int n=15;

coutcoutcoutcout

初學者也許會把oct、dec等當成忘記宣告的變數(開始我就是這麼認為),其實不然,它們分別代表十進位制(dec)、八進位制(oct)、十六進製制(hex)。cout的預設輸出格式為十進位制,不難猜測,cout<
1517f

15--------------------------------

process exited after 0.07195 seconds with return value 0

請按任意鍵繼續. . .

n的數值自始至終並未發生改變,只是進製改變了。
c++如何確定常量的型別

舉個栗子:

cout<<"year = "<<1492<
這裡的1492的型別將被存為什麼呢?答案是:除非int型別不夠大或者常量帶有字尾,則存為int型別。

那麼這裡再介紹一下字尾:

u,表示此常量為unsigned int型別,如:1492u;

ul,表示此常量為unsigned long型別.等同於lu.

ull,表示此常量為unsigned long long型別.

ll,表示此常量為long long int型別.

對於不帶字尾的十進位制數,採用int,l,ll(按優先順序順序)

而對於不帶字尾的十六/八進位制數,採用int,u,l,ul,ll,ull.

轉義序列

根據個人初步理解,轉義序列的意義就是用『\』加字元或數字表示一些特殊意義。

名稱c++**

ascii(dec)

換行符\n

10水平製表符\t9

垂直製表符

\v11

退格\b8回車

\r13

振鈴\a

7通用字元名

格式為\u或\u開頭,後加4(u)或8(u)位十六進製制數。 這與一種叫unicode的編碼有關:

<--------度娘在這裡

如:

cout<<"\u4734"

輸出在這裡:

螅摛--------------------------------

process exited after 0.06648 seconds with return value 0

請按任意鍵繼續. . .

這東西。。。高深!

符號常量——預處理器方式

#define int_max 32777

這行**我們並不陌生,學名:定義符號常量,#define & #include一樣,也是預處理器編譯指令。這是c語言遺留下來的定義方法,c++中的const其實已經在很多方面上代替了它。

int a=1;  c語言的初始化方式

int a(1); c++的初始化方式

const 限定符
const int n=221024;

然後,n的值就無法進行修改了。

const int n;

n=10;

這是一種經典的錯誤,n開始被初始化成了乙個不確定的值,而後面的n=10,也就無效了。

利用cpl檔案在xp中留乙個後門

先請看圖 這是我用restorator 開啟nusrmgr.cpl時的情形。你看到了什麼?是不是很吃驚,原來xp中控制面板中的 使用者帳戶 選項竟然是html做的。其實不然,微軟的好多元件的面板都是html做的。這也是微軟為什麼一直無法清掉ie的原因,它牽涉太多了,就算是反壟斷法也不可能讓微軟刪掉i...

學習筆記一

lisp 最重要的一種執行模式之一 repl that endless cycle of reading,evaluating,and printing is why it s called the read eval print loop or repl.第乙個lisp程式 在repl模式下執行l...

學習筆記 一

什麼是seo?搜尋引擎優化 search engine optimization,簡稱seo 是一種利用搜尋引擎的搜尋規則來提高目的 在有關搜尋引擎內的排名的方式。深刻理解是 通過seo這樣一套基於搜尋引擎的營銷思路,為 提供生態式的自我營銷解決方案,讓 在行業內佔據領先地位,從而獲得品牌收益。研究...