本文非原創(chuàng)鸡典。
概念上:
C++是一門計算機編程語言腰耙,而G++則是C++的編譯器榛丢。
GCC和G++都是GUN的編譯器,cc是Unix系統(tǒng)的C Compiler挺庞,而gcc則是GNU Compiler Collection晰赞,GNU編譯器套裝。gcc原名為Gun C語言編譯器,因為它原本只能處理C語言掖鱼,但gcc很快地擴展然走,包含很多編譯器(C、C++戏挡、Objective-C丰刊、Ada、Fortran增拥、Java)。
提交上的區(qū)別:
在OJ提交的語言選項中寻歧,G++和C++都代表一種編譯的方式掌栅。
選擇C++意味著你將使用C++最標準的編譯方式,也就是ANSI C++編譯码泛。
選擇G++則意味這你使用GNU項目中適用人群最多的編譯器(其實也就是我們熟悉的Code::Blocks 自帶的編譯器)猾封。
類似的還有選擇C和GCC,前者是標準的C編譯器噪珊,后者則是用GCC來編譯晌缘。
編譯時的差異:
編譯器優(yōu)化不同:
舉個栗子: ①: a++ ②: ++a
從標準C的角度看:①式是先調(diào)用,再自增痢站。在調(diào)用過程中磷箕,會申請一個新的數(shù)據(jù)地址,用于存放臨時的變量a’阵难,然后在把a’加1岳枷,之后在把a’賦值給a。但是②式不會這么麻煩呜叫,因為它是先自增空繁,后調(diào)用,也就省去了申請新地址的功夫朱庆。所以理論上盛泡,二者的時間消耗是有差異的。
而如果是使用GCC來編譯娱颊,那么這兩者基本上沒有差異傲诵。
精度缺省:
①long long類型维蒙,作為一個在C/C++11才被確認為基本數(shù)據(jù)類型的一個數(shù)據(jù)類型掰吕,在不同的環(huán)境下,他的類型標識符是不同的颅痊。也就是我們津津樂道的%lld 和 %I64d了殖熟。
②double類型也是一個有趣的類型。double類型其實準確地說是雙精度型斑响,他的內(nèi)存長度一般是比float類型(單精度型)的多了一倍菱属,有的時候很早的標準里是把double稱為long float的钳榨。所以說就有了為什么float類型用%f,double用%lf纽门。
在用scanf讀數(shù)據(jù)時薛耻,為了與float區(qū)分,使用%lf赏陵。
在用printf寫數(shù)據(jù)時饼齿,由于實質(zhì)上,double和float是同一個類型蝙搔,只不過內(nèi)存占用有差異而已缕溉,他們的標識符都是%f,注意吃型,這個和標準C不同证鸥,這里的都是%f。
列表:
double num
G++提交
C++提交
最安全的方法
輸入
scanf(“%lf”, &num);
scanf(“%lf”, &num);
cin >> num;
輸出
printf(“%f”, num);
printf(“%lf”, num);
cout << num;