1,linux系統上如何跑c++程序
1,vim一個hello.cpp,內容如下:
#include <iostream> using namespace std; int main() { cout << "Hello World!" << endl; return 0; }
2,g++編譯剛剛的程序:g++ 源文件名 -o 可執行的腳本名,比如我執行的就是:g++ hello.cpp -o hello
3,在當前文件夾執行: ./hello ps:並不需要向python一樣指定編譯器,大約是因為比較底層吧
2,linux系統上自帶GUN的c++編譯器,可以通過g++ -v檢查是否安裝了gcc,windows系統上推薦使用visual studio,方便調試,安裝教程
3,基本語法
#include <iostream> //頭文件,頭文件中包含了程序中必須的或者有用的信息 using namespace std; //使用命名空間 // main() 是程序開始執行的地方 int main() { cout << "Hello World"; // 輸出 Hello World return 0; //終止main函數,並且向調用進程返回0 } //c++用分號表示一行程序的結束,用大括號表示一個語句塊,區分大小寫,變量名用英文或者下划線加上數字表示,注釋可用://或者:/*我是多行注釋*/
三字符組:三字符組是啥?就是用??=表示#,用??/表示\,用??(表示[,
內置數據類型:
類型 | 關鍵字 |
---|---|
布爾型 | bool |
字符型 | char |
整型 | int |
浮點型 | float |
雙浮點型 | double |
無類型 | void |
寬字符型 | wchar_t |
數據類型的修飾:
類型 | 位 | 范圍 |
---|---|---|
char | 1 個字節 | -128 到 127 或者 0 到 255 |
unsigned char | 1 個字節 | 0 到 255 |
signed char | 1 個字節 | -128 到 127 |
int | 4 個字節 | -2147483648 到 2147483647 |
unsigned int | 4 個字節 | 0 到 4294967295 |
signed int | 4 個字節 | -2147483648 到 2147483647 |
short int | 2 個字節 | -32768 到 32767 |
unsigned short int | 2 個字節 | 0 到 65,535 |
signed short int | 2 個字節 | -32768 到 32767 |
long int | 8 個字節 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
signed long int | 8 個字節 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long int | 8 個字節 | 0 to 18,446,744,073,709,551,615 |
float | 4 個字節 | +/- 3.4e +/- 38 (~7 個數字) |
double | 8 個字節 | +/- 1.7e +/- 308 (~15 個數字) |
long double | 16 個字節 | +/- 1.7e +/- 308 (~15 個數字) |
wchar_t | 2 或 4 個字節 | 1 個寬字符 |
在這里主要說一下修飾符:
1,signed和unsigned主要區別是,signed是支持正負的,就拿int來說,默認一個int是4個字節,用4*8=32位來表示數據,其中第一位是表示正負號的,所以這個int的大小是正負2××31(正數需要減一),而unsigned int只表示正整數,所以第一位不再表示符合,所以取值范圍是0-2××32,對於char類型,同理,但是稍有不同,目前不能理解。
2,long和short,默認的int用4字節表示,short int用兩字節表示,所以是2×8=16位,大小是正負2××16(正整數需要減一),signed和unsigned同理。而long int用8個字節表示,需要8×8=16位,大小是正負2××64,天啦擼,計算機的計算能力真不是蓋得。
跑一下自己電腦里的數據類型:sizeof()返回各種數據類型的大小,單位是字節;endl將會在行后插入換行符;<<用於向屏幕傳遞多個值(實踐證明,就算是傳遞一個值也需要這個,,,)
typedef沒明白是啥意思,估計就是給原有的數據類型換個名字,內容一點也沒有換。
枚舉類型的意思就是,定義某個變量只能是某幾個值中的一個,例如
enum color { red, green, blue } c; c = blue; //定義一個枚舉名為color,c的類型就是color,也就是說c只能是red,green和blue中的一個,,然后c=賦值為bule。用下標也行,沒有特殊標識就是0,1,2
看我的實例:
#include <iostream> using namespace std; int main() { enum color { red, green, blue } c; //定義枚舉 c = red; cout << "i am c"<< c <<endl; //打出來瞅瞅 return 0; } //結果返回的竟然是'i am c0',好驚訝,如果c=blue,那就返回‘i am c2’,感覺莫名其妙
4,變量類型
1,bool型:儲存true或者false
2,char:1個字節(B)
3,int整數
4,float:4B,32位(從31到0,反序),31是符號,往前是8位指數和23位小數
5,double,雙精度浮點值:8B,(63到0反序),63位是符號,11位是指數,52位是小數
6,void表示類型缺失
7,wchar_t寬字符類型,大約是漢字等編碼過的字符
聲明變量:
int i, j, k; char c, ch; float f, salary; double d; extern int d = 3, f = 5; //d 和 f 的聲明 int d = 3, f = 5; // 定義並初始化 d 和 f byte z = 22; // 定義並初始化 z char x = 'x'; // 變量 x 的值為 'x' //注意extern:它是聲明而不是定義。一個 c++ 程序可以包含多個文件,在一個文件中已定義的變量,如果要在另一個文件中調用,就要先聲明一下變量,此時用 extern 這個關鍵字來聲明。(注意:在一個程序中,變量只能被定義一次,但可以多次聲明)
變量聲明,定義和初始化:
#include <iostream> using namespace std; // 變量聲明 extern int a, b; extern int c; extern float f; int main () { // 變量定義,類似於js,可以先聲明后初始化 int a, b; int c; float f; // 實際初始化 a = 10; b = 20; c = a + b; cout << c << endl ; //30 f = 70.0/3.0; cout << f << endl ; //23.3333 return 0; }
聲明不止針對變量,對待函數同樣有效:
// 函數聲明 int func(); int main() { // 函數調用 int i = func(); } // 函數定義 int func() { return 0; }
5,變量作用域:
全局和局部變量:總體和別的編程語言一樣。注意有個不同點。
#include <iostream> using namespace std; // 全局變量聲明,打印出來將會是0 int g; int main () { // 局部變量聲明 int a, b; // 實際初始化 a = 10; b = 20; g = a + b; cout << g; return 0; }
定義全局變量時候,系統會為下面的數據類型設置默認值:
int:0
char:‘\0’
float:0
double:0
pointer:NULL
6,常量:
又叫字面量,常量就像是常規的變量,只不過常量的值在定義后不能進行修改。
整數常量:整數常量可以是十進制、八進制或十六進制的常量。前綴指定基數:0x 或 0X 表示十六進制,0 表示八進制,不帶前綴則默認表示十進制。整數常量后面可以帶指示符號,U 表示無符號整數(unsigned),L 表示長整數(long)。后綴可以是大寫,也可以是小寫,U 和 L 的順序任意。
實例:
85 // 十進制 0213 // 八進制 0x4b // 十六進制 30 // 整數 30u // 無符號整數 30l // 長整數 30ul // 無符號長整數
浮點常量:浮點常量由整數部分、小數點、小數部分和指數部分組成。帶符號的指數是用 e 或 E 引入的。
實例:
3.14159 // 合法的 314159E-5L // 合法的 510E // 非法的:不完整的指數 210f // 非法的:沒有小數或指數 .e55 // 非法的:缺少整數或分數
布爾常量:true或者false
字符常量(就一個):字符常量是括在單(單引號哦)引號中。如果常量以 L(僅當大寫時)開頭,則表示它是一個寬字符常量(例如 L'x'),此時它必須存儲在 wchar_t類型的變量中。否則,它就是一個窄字符常量(例如 'x'),此時它可以存儲在 char 類型的簡單變量中。
字符常量可以是一個普通的字符(例如 'x')、一個轉義序列(例如 '\t'),或一個通用的字符(例如 '\u02C0')。
在 C++ 中,有一些特定的字符,當它們前面有反斜杠時,它們就具有特殊的含義,被用來表示如換行符(\n)或制表符(\t)等。下表列出了一些這樣的轉義序列碼:
\\ | \ 字符 |
\' | ' 字符 |
\" | " 字符 |
\? | ? 字符 |
\a | 警報鈴聲 |
\b | 退格鍵 |
\f | 換頁符 |
\n | 換行符 |
\r | 回車 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ooo | 一到三位的八進制數 |
\xhh . . . | 一個或多個數字的十六進制數 |
字符串常量(可以是好多個):字符串字面值或常量是括在雙引號 "" 中的。一個字符串包含類似於字符常量的字符:普通的字符、轉義序列和通用的字符。
如何定義常量:
#include <iostream> using namespace std; #define LENGTH 10 //定義常量LENGTH 為10,據說是宏定義,只要編譯器碰到LENGTH,那就自動替換為10用, #define WIDTH 5 #define NEWLINE '\n' int main() { int area; area = LENGTH * WIDTH; //10*5=50 cout << area; //按理說應該輸出為50 cout << NEWLINE; //換行符,輸出了也看不出來 return 0; }
const用來聲明指定類型的常量:言外之意就是define沒有指定類型。
#include <iostream> using namespace std; int main() { const int LENGTH = 10; const int WIDTH = 5; const char NEWLINE = '\n'; int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }
注意,常量一般都用大寫字母來寫。
7,修飾符類型(前面學過了,再鞏固一下吧)
1,數據類型修飾符:
signed int:有符號整數型,也就是說第一位表示正負符號。unsigned int:無符號整數,沒有符號,所以可以表示的正數范圍比較大
比如:
#include <iostream> using namespace std; int main() { short int i; // 有符號短整數 short unsigned int j; // 無符號短整數 j = 50000; i = j; cout << i << " " << j; return 0; } /*無符號短整數 50,000 的位模式被解釋為有符號短整數 -15,536。*/
其他限定符:
const:對象再程序執行期間不能被修改改變。
volatile:告訴程序不優化變量
restrict:由 restrict 修飾的指針是唯一一種訪問它所指向的對象的方式。