C 0 基礎知識

2021-10-08 07:12:29 字數 3614 閱讀 1500

型別

注意點int

整型bool

布林型float

浮點型double

雙浮點型,一般的預設為double浮點型,額外加f或者f才可化成float;指數形式表示;

char

字元型,表示方法如 『a』

void

無型別wchar_t

寬字元型

字串可由兩種風格定義,

c風格的字串其實就是一對雙引號括起來的字串行,在記憶體中按串中字元的排列順序存放,每乙個字元佔乙個位元組,在末尾編譯器會自動台南佳乙個 』 \0 』 作為結尾的標記。

記憶體中儲存形式舉例:

「china」

c h i n a \0

"a"a \0

』a』a

常用操作:

//使用示例

#include

#include

using

namespace std;

int main (

)

可以用來進行轉碼等操作。

按位與:&

按位或:|

按位異或:^

按位取反:~

二進位制左移運算子:<<

二進位制右移運算子: >>

左運算元的值向左移動右運算元指定的位數。 a << 2 將得到 240,即為 1111 0000

左運算元的值向右移動右運算元指定的位數。 a >> 2 將得到 15,即為 0000 1111

假設如果 a = 60,且 b = 13,現在以二進位制格式表示,它們如下所示:

a = 0011 1100

b = 0000 1101

那麼有:

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a = 1100 0011

幾點簡單應用舉例:

//char a 的最低位置置為0:

a = a & 0xfe

;//0xfe 為 1111 1110

//存在char c; int a; 取出a的最低位元組放置到c中

c = a &

0xff

;//0xff 為 1111 1111

//將int a 最低位元組置為1

a = a |

0xff

;//to be continued ......

//來自菜鳥教程舉例

#include

using

namespace std;

intmain()

//輸出結果:

line 1 - c 的值是 12

line 2 - c 的值是 61

line 3 - c 的值是 49

line 4 - c 的值是 -61

line 5 - c 的值是 240

line 6 - c 的值是 15

右移 除以2

左移 乘以2

//關於資料操作溢位現象舉例 to be continued…

//留個坑…

實現通過初始值自動推斷變數型別

在c++程式語言中,decltype作為操作符,用於獲取表示式的資料型別。c++11標準引入decltype,主要是為泛型程式設計而設計,以解決泛型程式設計中有些型別由模板引數決定而難以(甚至不可能)表示的問題。

從語義上說,decltype的設計適合於通用庫編寫者或程式設計新手。總體上說,對於變數或函式引數作為表示式,由decltype推導出的型別與原始碼中的定義可精確匹配。而正如sizeof操作符一樣,decltype不對運算元求值。

雖然c++規範或大多數的文件及書籍都將decltype定義為乙個操作符,但是針對初學者而言,應將此操作符理解為一種特殊的型別宣告,而不是像一些強型別語言那樣將此操作符理解為乙個帶返回值的函式。

簡單來說,定義乙個變數與某一表示式的型別相同但是並不以該表示式初始化變數。

例如,decltype ( i ) j = 2;

表示, j 以2 為初始值,型別與 i 一樣(但是不以 i 的值初始化 j )

constexpr是c++11引入的關鍵字,用於編譯時的常量與常量函式。

常量函式的特點為引數為常量,返回值一定是常量。

宣告為constexpr函式的意義是:如果其引數均為合適的編譯期常量,則對這個constexpr函式的呼叫就可用於期望常量表示式的場合(如模板的非型別引數,或列舉常量的值)。如果引數的值在執行期才能確定,或者雖然引數的值是編譯期常量,但不匹配這個函式的要求,則對這個函式呼叫的求值只能在執行期進行。

c++編譯時可確定常量表示式的結果,因此可在編譯時優化。c++規範在一些地方要求使用常量表示式,如宣告陣列的維數。但常量表示式不允許包含函式呼叫或者物件構造。

c++11指出,所有被宣告為constexpr的非靜態成員函式也隱含宣告為const(即函式不能修改*this的值)。c++14已經刪除此點,非靜態成員函式可以為非const。

constexpr函式必須滿足下述限制:

函式返回值不能是void型別

函式體不能宣告變數或定義新的型別

函式體只能包含宣告、null語句或者一條return語句

在形參實參結合後,return語句中的表示式為常量表示式

為構造使用者定義型別的常量表示式,建構函式必須用constexpr宣告,函式體僅包含宣告或null語句,不能宣告變數或定義型別。因此,建構函式的實參值應該是常量表示式,直接初始化類的資料成員。析構函式是一般的。型別的拷貝建構函式應該也定義為constexpr,以允許constexpr函式返回乙個該型別的物件。型別的成員函式都應該是constexpr。

constexpr函式或建構函式的實參值如果不是常量表示式,那麼呼叫行為與結果就不是常量表示式。

#include

using

namespace std;

/*不同標準下的示例

*/// c++98/03

template

<

int n>

struct factorial_cpp03

;template

<

>

struct factorial_cpp03<

0>

;// c++11

constexpr

intfactorial_cpp11

(int n)

// c++14

constexpr

intfactorial_cpp14

(int n)

intmain()

C 0基礎學習筆記

include using namespace std intmain 這樣就定義了乙個int變數。int是變數型別。int存小數會自動向下取整。做除法,a b,ab都是int 結果向下取整 解決方法 double float 0.0 定義double include using namespace...

C 筆記0 基礎知識

我在信盈達裡面學了一點點,剛學,想把筆記記在這裡,想跟大家討論討論,有錯記得叫我喲 include 輸入輸出標頭檔案 using namespace std 標準命名空間 命名空間 避免全域性實體衝突 使用方法如 led a key a std a std是標準命名空間,建議 全都加上這句 回顧一下...

浮光掠影C 0 計畫

一般來說,運用計算機解決複雜問題可分為這麼幾個階段 1.從現實中抽象出物理模型,建立本構關係。2.將物理模型轉換為數學模型。3.將數學模型轉化為計算機模型,並由程式求解。對於並非專業從事軟體開發,而是將大多數精力用於演算法與本構研究人來說,即希望使用fortran 標準c等開發相對簡單,適合科學計算...