亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

【C/C++】C++對C的擴展總結

2019-11-08 01:01:20
字體:
來源:轉載
供稿:網友

  之前一直在搞java開發,去年9月份開始,陸陸續續的公司來學校校招了,然后開始忙于校招。后來去了華為,簽了約后開始寫大論文,所以之后就一直沒有更新自己的博客了,有些朋友留言說博主懶惰了,好久都沒寫博客了~哈哈!現在大論文也差不多了,是時候繼續學習了。   由于簽了華為,崗位是通信設備軟件開發,再加上之前有一周的培訓,我估計后面基本上是要做C/C++了,其實我挺喜歡做java的,但是沒辦法。C++我在三年前看過幾個月,僅此而已,現在早忘得差不多了。為了能在5月份入職的時候能夠快速上手工作,所以打算接下來的時間好好學習和總結一下C++的東西。   C++和C看起來很像,我覺得叫++C可能會更好,顧名思義,從C拓展而來,兼容C的東西。這篇博文主要來總結一下C++對C都做了哪些拓展,有哪些區別。如果有什么錯誤,還請博友們指出來,畢竟我還是個C++菜鳥,謝謝!

1. 類型檢查更嚴格

  舉個例子,我們都知道,當一個變量定義為const類型后,這個變量的值是不能被改變的,但是在C中,我們可以拐著彎去修改const類型變量的值,如下:

int main(int argc, char *argv[]){ const int a = 100; //a = 200; // error int *p = &a; *p = 200;   對于const類型變量a,我們無法直接再去給它賦值200,但是我們可以定義一個指針變量p來保存a的地址,通過*p來修改a的值,在C里面這樣是可以做到的,這叫明修棧道暗度陳倉。我們再來詳細分析一下這個過程,a是個const int類型,那么取地址后就變成了const int *類型,也就是說相當于把const int *類型的變量賦給了int *類型,把const給干掉了,所以可以對*p進行賦值了。C中可以隨便賦值,這就導致了不嚴謹。   在C++里,int *p = &a編譯則不會通過,因為無法將const int *類型的變量賦給了int *類型,所以既然設定了a為const類型的變量,它就不會讓你有修改的機會。C++不喜歡強轉,C++會認為你設計有問題。還有個小細節,在定義a的時候,C中可以不賦初值,系統會給一個隨機值,而C++中強制你在定義的時候要初始化,這一點在語言的層面上做的就比較友好了。   再舉個常見的例子,我們知道malloc函數返回的是void *類型,在C中,我們可以直接將返回值賦給char *的變量,但是在C++中,必須轉換成char *類型才可以,如下:

char *p = malloc(100); // Cchar *p = (char *)malloc(100); // C++

2. 增加bool類型

  在C語言中是沒有bool類型的,C中表示真假用的是0和非0。C++中有bool類型,可以使用true和false來表示真和假。但是在C++中,也可以將0和非0賦給bool類型的變量,這點其實C++做的不太嚴謹,既然有了bool類型,個人覺得只能用true和false去賦值會更好,可讀性也更強。   bool類型其實說白了就是個枚舉,C中雖然沒有,但是我們可以用枚舉來定義這個類型。

#include <stdio.h>typedef enum BOOL{ FALSE,TRUE}Bool;int main(int argc, char *argv[]){ Bool b = FALSE; if(!b) { printf("b value is false/n"); } return 0;}

  C中必須使用typedef才可以直接使用Bool,否則需要加enum來定義,如enum BOOL b = FALSE;。在C++中,枚舉類型可以直接用來定義變量,不需要再加上enum關鍵字,也不需要使用typedef來重新命名。

3. 真正的枚舉

  這是什么意思呢?C中的枚舉算不上真正的枚舉,C 語言中枚舉的本質就是整型,枚舉變量可以用任意整型來賦值。而C++中枚舉變量,只能用被枚舉出來的元素去初始化。比如我們定義一個枚舉類型:

enum SEASON{ Spring,Summer,Autumn,Winter};

在C中我們可以:

enum SEASON s;s = Spring; //oks = 100; //ok

但是在C++中:

SEASON s;s = Spring; //oks = 100; //error

  說個題外話,枚舉除了列舉一些固定的值以外,還能充當宏的作用。還是上面的例子,如果我們把SEASON去掉,完全可以將枚舉中的值作為宏來處理,因為枚舉中的值默認是從0開始,也可以手動賦不一樣的值,如下:

#include <iostream>enum{ Spring = 100, Summer = 20, Autumn = 50, Winter = 250};int main(int argc, char *argv[]){ printf("%d %d %d %d/n",Spring, Summer, Autumn, Winter); return 0;}

這樣會將四個值打印出來,可以完美替代宏去操作了,這也是枚舉的一個妙用吧。

4. 表達式可以被賦值

在C中,表達式是不可以被賦值的,但是在C++中,某些表達式是可以被賦值的。

int main(){ int a, b; a = b = 5; // ok both in c & c++ (a = b) = 100; // ok only in c++ printf("a=%d b=%d/n",a, b); return 0;}

  在C中,表達式的值是可以賦值給其他變量的,比如a=b=5;是將5賦給b,再將表達式b=5的值賦給a,所以a和b都等于5。但是C中不能將100賦值給表達式(a=b),雖然該表達式的值是a的值,但是不允許這樣操作,可在C++中是允許的,最后會打印出a=100 b=5。

5. 輸入與輸出

  在C中我們一般用scanf和printf來輸入和輸出,在C++中使用cin和cout來輸入和輸出,這兩個有啥區別呢?從語言的角度來說,scanf和printf是函數,cin和cout是類對象,他們有相同的功能而已。舉個與C對比的例子:

int main(int argc, char *argv[]){ int a = 25; float b = 1234.567; printf("%5d/n%6.2f/n", a, b); cout<<setw(5)<<a<<endl<<setw(6)<<setprecision(2)<<setiosflags(ios::fixed)<<b<<endl; printf("%x/n%o/n%d/n", a, a, a); cout<<hex<<a<<endl<<oct<<a<<endl<<dec<<a<<endl; return 0;}

  使用setw()函數來設定域寬,使用setprecision和setiosflags來設定小數位。使用hex、oct和dec來表示十六進制、八進制和十進制。關于輸入輸出后面再細寫吧。   當然了,C++對C的擴展遠不止這些,今天就先寫這么多吧,后面再補充吧~


—–樂于分享,共同進步! —–更多文章請看:http://blog.csdn.net/eson_15


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人黄色免费在线观看| 国产亚洲精品久久久| 国产精品久久久久999| 日韩在线欧美在线国产在线| 久久躁日日躁aaaaxxxx| 在线电影av不卡网址| 久久久久久久久久久av| 在线日韩第一页| 中文字幕欧美国内| 日韩h在线观看| 精品久久久一区| 91福利视频在线观看| 欧美黑人一区二区三区| 欧美韩国理论所午夜片917电影| 国产精品久久久久久久久久久不卡| 欧洲永久精品大片ww免费漫画| 日韩欧美在线中文字幕| 国产精品久久久久久久app| 精品亚洲精品福利线在观看| 亚洲欧美精品suv| 欧美国产日产韩国视频| 97精品一区二区三区| 欧美日韩在线观看视频小说| 91免费看视频.| 亚洲精品狠狠操| 亚洲成人av片| 欧美日韩午夜剧场| 成人一区二区电影| 九九热最新视频//这里只有精品| 91久久精品日日躁夜夜躁国产| 久久天天躁狠狠躁夜夜av| 91精品国产色综合久久不卡98口| 国产精品男女猛烈高潮激情| 91视频-88av| 欧美洲成人男女午夜视频| 亚洲成人av片在线观看| 最近2019年好看中文字幕视频| 日韩激情av在线免费观看| 国产一区二区免费| 国产综合香蕉五月婷在线| 国产成人免费av电影| 欧美黑人性猛交| 国色天香2019中文字幕在线观看| 亚洲国产欧美日韩精品| 欧美国产日产韩国视频| 亚洲社区在线观看| 亚洲国产精品网站| 欧美一区视频在线| 福利一区福利二区微拍刺激| 精品国产乱码久久久久久婷婷| 在线看国产精品| 国产精品久久久久久久电影| 91精品视频专区| 欧美高清在线观看| 欧美日韩中国免费专区在线看| 欧美成人一二三| 亚洲国产精品久久久久| 午夜精品一区二区三区在线| 国产精品一区专区欧美日韩| 国模叶桐国产精品一区| 久久久久久久久国产精品| 亚洲在线观看视频网站| 成人国产在线激情| 欧美一级高清免费| 国产在线观看一区二区三区| 国内精品免费午夜毛片| 中文字幕亚洲欧美一区二区三区| 一区二区三区亚洲| 中文字幕欧美日韩在线| 久久夜色精品国产欧美乱| 91国自产精品中文字幕亚洲| 色综合久久天天综线观看| 精品成人乱色一区二区| 国产欧美va欧美va香蕉在线| 日韩国产一区三区| 国产日韩在线精品av| 国产成人涩涩涩视频在线观看| 日韩在线观看免费av| 日本韩国在线不卡| 久久综合伊人77777尤物| 亚洲一区二区三区乱码aⅴ蜜桃女| 日本久久亚洲电影| 欧美一级成年大片在线观看| 欧美福利视频在线| 亚洲视频专区在线| 国产精品69av| 国产午夜精品一区理论片飘花| 精品国偷自产在线视频99| 欧洲精品毛片网站| 欧美一级大片视频| 国产亚洲精品久久久久久| 俺去亚洲欧洲欧美日韩| 欧美午夜精品久久久久久人妖| 中文字幕v亚洲ⅴv天堂| 久久成人这里只有精品| 欧美日韩在线视频一区二区| 久久精品这里热有精品| 91精品国产高清久久久久久久久| 亚洲综合av影视| 亚洲国产精品久久91精品| 亚洲福利视频久久| 国产精品爽爽爽爽爽爽在线观看| 欧美激情在线播放| 色综合久久中文字幕综合网小说| 日韩av在线免费| 日本不卡视频在线播放| 国产精品盗摄久久久| 中文字幕av一区二区三区谷原希美| 成人黄色大片在线免费观看| 国产精品91久久久| 国产欧美日韩免费| 91久久综合亚洲鲁鲁五月天| 热久久免费视频精品| 久久五月天综合| 欧美成人国产va精品日本一级| 亚洲free性xxxx护士hd| 久久99久久99精品中文字幕| 91精品国产综合久久男男| 亚洲人成网站色ww在线| 国产日韩精品在线| 91中文在线观看| 日韩免费观看视频| 国产亚洲日本欧美韩国| 成人av资源在线播放| 国产丝袜一区二区三区免费视频| 国产精品久久97| 国产手机视频精品| 久久韩剧网电视剧| 欧美视频二区36p| 91最新在线免费观看| 亚洲免费一在线| 日韩女在线观看| 亚洲最大福利视频网站| 国产精品久久久久久久久久久不卡| 久青草国产97香蕉在线视频| 茄子视频成人在线| 欧美日本啪啪无遮挡网站| 日韩中文字幕在线视频播放| 91久久精品久久国产性色也91| 欧美久久精品一级黑人c片| 国内精品久久久久久久| 亚洲精品资源在线| 日本人成精品视频在线| 精品久久久免费| 久久免费国产精品1| 91精品视频免费看| 日产日韩在线亚洲欧美| 欧美激情一区二区三区在线视频观看| 欧美精品情趣视频| 色香阁99久久精品久久久| 国产精品国产三级国产aⅴ浪潮| 亚洲一区二区三区香蕉| 日本午夜人人精品| 国产精品伦子伦免费视频| 992tv在线成人免费观看| 日韩网站免费观看高清| 欧美福利小视频| 国产一区二区日韩| 久久影视电视剧免费网站| 热re91久久精品国99热蜜臀| 91精品久久久久久久久中文字幕| 日本午夜在线亚洲.国产| 久久人人爽人人爽人人片av高请| 4388成人网|