計算機的記憶體的基本單位是位(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這樣一套基於搜尋引擎的營銷思路,為 提供生態式的自我營銷解決方案,讓 在行業內佔據領先地位,從而獲得品牌收益。研究...