一、程序源文件命名約定
無(wú)論你使用命令行界面或者IDE,大多數(shù)編譯器都要求程序源碼存儲(chǔ)在一個(gè)或多個(gè)文件中。程序文件通常被稱為源文件(source file)。在大多數(shù)系統(tǒng)中,源文件的名字以一個(gè)后綴為結(jié)尾,后綴是由一個(gè)句點(diǎn)后接-一個(gè)或多個(gè)字符組成的。后綴告訴系統(tǒng)這個(gè)文件是一個(gè)C++程序。不同編譯器使用不同的后綴命名約定,最常見的包括. cc、.cxx、.cpp、.cp及.C。
二、初識(shí)輸入輸出
本書中的很多示例都使用了iostream 庫(kù)。iostream 庫(kù)包含兩個(gè)基礎(chǔ)類型istream和ostream,分別表示輸入流和輸出流。一個(gè)流就是一個(gè)字符序列,是從IO設(shè)備讀出或?qū)懭隝O設(shè)備的。術(shù)語(yǔ)“流" (stream)想要表達(dá)的是,隨著時(shí)間的推移,字符是順序生成或消耗的。
#include < iostream > // 頭文件
int main()
{
std::cout < < "Enter two numbers : " < < std::endl;
int v1 = 0, v2 = 0;
std::cin > > v1 > > v2 ;
std::cout< < "The sum of " < < v1 < < " and " < < v2 < < " is " < < v1 + v2 < < std::endl;
return 0;
}
這個(gè)程序開始時(shí)在用戶屏幕打印
Enter two numbers :
然后等待用戶輸入。如果用戶鍵入
6 8
然后鍵入一個(gè)回車,則程序產(chǎn)生如下輸出:
The sum of 6 and 8 is 14
1、向流寫入數(shù)據(jù)
main 的函數(shù)體的第一條語(yǔ)句執(zhí)行了一個(gè)表達(dá)式(expression)。在C++中,一個(gè)表達(dá)式產(chǎn)生一個(gè)計(jì)算結(jié)果,它由一個(gè)或多個(gè)運(yùn)算對(duì)象和(通常是) 一個(gè)運(yùn)算符組成。這條語(yǔ)句中的表達(dá)式使用了輸出運(yùn)算符(<<)在標(biāo)準(zhǔn)輸出上打印消息:
std::cout < < "Enter two numbers : " < < std::endl;
<< 運(yùn)算符接受兩個(gè)運(yùn)算對(duì)象:左側(cè)的運(yùn)算對(duì)象必須是一個(gè) ostream對(duì)象,右側(cè)的運(yùn)算對(duì)象是要打印的值。此運(yùn)算符將給定的值寫到給定的ostream對(duì)象中。輸出運(yùn)算符的計(jì)算結(jié)果就是其左側(cè)運(yùn)算對(duì)象。即,計(jì)算結(jié)果就是我們寫入給定值的那個(gè)ostream對(duì)象。我們的輸出語(yǔ)句使用了兩次<<運(yùn)算符。因?yàn)榇诉\(yùn)算符返回其左側(cè)的運(yùn)算對(duì)象,因此第一個(gè)運(yùn)算符的結(jié)果成為了第二個(gè)運(yùn)算符的左側(cè)運(yùn)算對(duì)象。這樣,我們就可以將輸出請(qǐng)求連接起來(lái)。
因此,我們的表達(dá)式等價(jià)于;
(std::cout << "Enter two numbers:") << std::endl;
等價(jià)于:
std: :cout << "Enter two numbers:";
std: :cout << std: :endl;
第一個(gè)輸出運(yùn)算符給用戶打印一條消息。這個(gè)消息是一個(gè)字符串字面值常量(string literal),是用一對(duì)雙引號(hào)包圍的字符序列。在雙引號(hào)之間的文本被打印到標(biāo)準(zhǔn)輸出。
第二個(gè)運(yùn)算符打印endl,這是一個(gè)被稱為操縱符(manipulator)的特殊值。寫入endl的效果是結(jié)束當(dāng)前行,并將與設(shè)備關(guān)聯(lián)的緩沖區(qū)( buffer)中的內(nèi)容刷到設(shè)備中。緩沖刷新操作可以保證到目前為止程序所產(chǎn)生的所有輸出都真正寫入輸出流中,而不是僅停留在內(nèi)存中等待寫入流。
2、使用標(biāo)準(zhǔn)庫(kù)中的名字
細(xì)心的讀者可能會(huì)注意到這個(gè)程序使用了std: :cout和std: :endl。前綴std: :指出名字cout和endl是定義在名為std的命名空間(namespace)中的。標(biāo)準(zhǔn)庫(kù)定義的所有名字都在命名空間std中。通過(guò)命名空間使用標(biāo)準(zhǔn)庫(kù)有一個(gè)副作用:當(dāng)使用標(biāo)準(zhǔn)庫(kù)中的一個(gè)名字時(shí),必須顯式說(shuō)明我們想使用來(lái)自命名空間std中的名字。例如,需要寫出std: :cout,通過(guò)使用作用域運(yùn)算符( :: )來(lái)指出我們想使用定義在命名空間std中的名字cout。將給出一個(gè)更簡(jiǎn)單的訪問(wèn)標(biāo)準(zhǔn)庫(kù)中名字的方法。
3、從流讀取數(shù)據(jù)
在提示用戶輸入數(shù)據(jù)之后,接下來(lái)我們希望讀入用戶的輸入。
std: :cin >> v1 >> v2;
它讀入輸入數(shù)據(jù)。輸入運(yùn)算符(>>)與輸出運(yùn)算符類似,它接受一個(gè)istream作為其左側(cè)運(yùn)算對(duì)象,接受一個(gè)對(duì)象作為其右側(cè)運(yùn)算對(duì)象。它從給定的istream 讀入數(shù)據(jù),并存入給定對(duì)象中。與輸出運(yùn)算符類似,輸入運(yùn)算符返回其左側(cè)運(yùn)算對(duì)象作為其計(jì)算結(jié)果。
因此,此表達(dá)式等價(jià)于(std: :cin >> v1) >> v2;
等價(jià)于:
std::cin >> v1;
std::cin>>v2;
三、注釋簡(jiǎn)介
// 正確
/* 正確 */
/* 正確
*/
/*
★注釋對(duì)/* */不 能嵌套。
★
“不能嵌套”幾個(gè)字會(huì)被認(rèn)為是源碼,
★像剩余程序一樣處理
*/
#include < iostream >
int main()
{
std ::cout < < "/*";
std ::cout < "*/";
std ::cout < < /* "*/" */";
std ::cout < < /*"*/"/*"/*" */;
return 0;
}
四、控制流
語(yǔ)句一般是順序執(zhí)行的:語(yǔ)句塊的第一條語(yǔ)句首先執(zhí)行, 然后是第二條語(yǔ)句,依此類推。但程序設(shè)計(jì)語(yǔ)言提供了多種不同的控制流語(yǔ)句,允許我們寫出更為復(fù)雜的執(zhí)行路徑。
1、while語(yǔ)句
C語(yǔ)言學(xué)習(xí)進(jìn)階~總貼
2、for語(yǔ)句
C語(yǔ)言學(xué)習(xí)進(jìn)階~總貼
3、讀取數(shù)量不定的輸人數(shù)據(jù)
在某種情況下,我們預(yù)先不知道要對(duì)多少個(gè)數(shù)求和,這就需要不斷讀取數(shù)據(jù)直至沒(méi)有新的輸入為止:
#include < iostream >
int main()
{
int sum = 0, value = 0;
std::cout < < "Enter " < < std::endl;
while (std::cin > > value) //讀取數(shù)據(jù)直到遇到文件尾,計(jì)算所有讀入的值的和
sum += value; //等價(jià)于sum=sum+value
std::cout < < "Sum is : " < < sum < < std::endl;
return 0;
}
如果我們輸入.
3 4 5 6 7 8
則程序會(huì)輸出
Sum is : 33
因此,我們的while 循環(huán)會(huì)一直執(zhí)行 直至遇到文件結(jié)束符(或輸入錯(cuò)誤)。while循環(huán)體使用復(fù)合賦值運(yùn)算符將當(dāng)前值加到sum上。一旦條件失敗,while循環(huán)將會(huì)結(jié)束。將執(zhí)行下一條語(yǔ)句,打印sum的值和一個(gè)endl。
從鍵盤輸入文件結(jié)束符
當(dāng)從鍵盤向程序輸入數(shù)據(jù)時(shí),對(duì)于如何指出文件結(jié)束,不同操作系統(tǒng)有不同的約定。在Windows系統(tǒng)中,輸入文件結(jié)束符的方法是敲Ctrl+Z (按住Ctrl 鍵的同時(shí)按Z鍵),然后按Enter或Return鍵。在UNIX系統(tǒng)中,包括MacOSX系統(tǒng)中,文件結(jié)束符輸入是用Ctrl+D。
4、if 語(yǔ)句
與大多數(shù)語(yǔ)言一樣,C++也提供了if語(yǔ)句來(lái)支持條件執(zhí)行。我們可以用if語(yǔ)句寫一個(gè)程序,來(lái)統(tǒng)計(jì)在輸入中每個(gè)值連續(xù)出現(xiàn)了多少次:
#include < iostream >
int main()
{
// currVal 是我們正在統(tǒng)計(jì)的數(shù); 我們將讀入的新值存入val .
int currVal = 0, val = 0;
//讀取第一個(gè)數(shù),并確保確實(shí)有數(shù)據(jù)可以處理
if (std::cin > > currVal) {
int cnt = 1;
//保存我們正在處理的當(dāng)前值的個(gè)數(shù)
while (std::cin > > val)
{ // 讀取剩余的數(shù)
if (val == currVal) // 如果值相同
++cnt;
//將cnt加1
else
{
//否則,打印前一個(gè)值的個(gè)數(shù)
std::cout < < currVal < < " occurs "< < cnt < < " times" < < std::endl;
currVal = val;
//記住新值
cnt = 1;
//重置計(jì)數(shù)器
} // while循環(huán)在這里結(jié)束
//記住打印文件中最后一個(gè)值的個(gè)數(shù)
}
std::cout < < currVal < < " occurs " < < cnt < < " times" < < std::endl;
}//最外層的if語(yǔ)句在這里結(jié)束
return 0;
}
5、類簡(jiǎn)介
在C++中,我們通過(guò)定義一個(gè)類(class) 來(lái)定義自己的數(shù)據(jù)結(jié)構(gòu)。一個(gè)類定義了一個(gè)類型,以及與其關(guān)聯(lián)的一組操作。類機(jī)制是C++最重要的特性之一。實(shí)際上,C++最初的一個(gè)設(shè)計(jì)焦點(diǎn)就是能定義使用上像內(nèi)置類型一樣自然的類類型(class type)。
為了使用類,我們需要了解三件事情:
- 類名是什么?
- 它是在哪里定義的?
- 它支持什么操作?
每個(gè)類實(shí)際上都定義了一個(gè)新的類型,其類型名就是類名。因此,我們的Sales_ item類定義了一個(gè)名為Sales_ item的類型。與內(nèi)置類型一樣,我們可以定義類類型的變量。當(dāng)我們寫下如下語(yǔ)句:
Sales item item;
是想表達(dá)item是一個(gè)Sales_ item 類型的對(duì)象。
(1)讀寫Sales_ item
#include < iostream >
#include "Sales_item.h"
int main()
{
Sales_item book;
//讀入ISBN號(hào)、售出的冊(cè)數(shù)以及銷售價(jià)格.
std:: cin > > book;
//寫入ISBN、 售出的冊(cè)數(shù)、總銷售額和平均價(jià)格
std:: cout < < book < < std:: endl;
return 0;
}
如果輸入:
0-201-70353-X 4 24.99
則輸出為:
0-201-70353-x 4 99.96 24.99
(2)Sales_ item對(duì)象的加法
#include < iostream >
#include "Sales_ item.h"
int main()
{
Sales_item item1,item2;
std:: cin > > iteml > > item2;
//讀取一對(duì)交易記錄
std:: cout < < item1 + item2 < < std :: endl;
//打印它們的和
return 0;
}
如果輸入如下內(nèi)容:
0-201-78345-X 3 20. 00
0-201-78345-x 2 25.00
則輸出為:
0-201-78345-X 5 110 22
(3)初識(shí)成員函數(shù)
將兩個(gè)Sales_item對(duì)象相加的程序首先應(yīng)該檢查兩個(gè)對(duì)象是否具有相同的ISBN。
方法如下:
#include < iostream >
#include "Sales item.h"
int main()
{
Sales_item iteml, item2;
std::cin > > iteml > > item2;
//首先檢查item1和item2是否表示相同的書
if (iteml.isbn() == item2.isbn()) {
std::cout < < item1 + item2 < < std::endl;
return 0; // 表示成功
}
else {
std::cerr < < "Data must refer to same ISBN" < < std :: endl;
return -1;
//表示失敗
}
}
什么是成員函數(shù)?
這個(gè)if語(yǔ)句的檢測(cè)條件 item1. isbn() == item2.isbn()
調(diào)用名為isbn的成員函數(shù)(member function)。成員函數(shù)是定義為類的一部分的函數(shù),有時(shí)也被稱為方法(method)。我們通常以一個(gè)類對(duì)象的名義來(lái)調(diào)用成員函數(shù)。
使用點(diǎn)運(yùn)算符(.)來(lái)表達(dá)我們需要“名為item1的對(duì)象的isbn成員”。點(diǎn)運(yùn)算符只能用于類類型的對(duì)象。其左側(cè)運(yùn)算對(duì)象必須是一個(gè)類類型的對(duì)象,右側(cè)運(yùn)算對(duì)象必須是該類型的一個(gè)成員名,運(yùn)算結(jié)果為右側(cè)運(yùn)算對(duì)象指定的成員。
6、書店程序
我們需要從一個(gè)文件中讀取銷售記錄,生成每本書的銷售報(bào)告,顯示售出冊(cè)數(shù)、總銷售額和平均售價(jià)。我們假定每個(gè)ISBN書號(hào)的所有銷售記錄在文件中是聚在一起保存的。
我們的程序會(huì)將每個(gè)ISBN的所有數(shù)據(jù)合并起來(lái),存入名為total的變量中。我們使用另一-個(gè)名為trans的變量保存讀取的每條銷售記錄。如果trans和total指向相同的ISBN,我們會(huì)更新total的值。否則,我們會(huì)打印total的值,并將其重置為剛剛讀取的數(shù)據(jù)(trans):
#include < iostream >
#include "Sales item. h"
int main()
{
Sales_item total; // 保存下一條交易記錄的變量
//讀入第一條交易記錄,并確保有數(shù)據(jù)可以處理
if (std:: cin > > total)
{
Sales_item trans;
//保存和的變量
//讀入并處理剩余交易記錄
while (std:: cin > > trans)
{
//如果我們?nèi)栽谔幚硐嗤臅?/span>
if (total.isbn() == trans.isbn())
total += trans; // 更新總銷售額
else
{
//打印前一本書的結(jié)果
std:: cout < < total < < std :: endl;
total = trans; // total 現(xiàn)在表示下一本書的銷售額
}
}
std:: cout < < total < < std :: endl; //打印最后一本書的結(jié)果
}
else
{
//沒(méi)有輸入!警告讀者
std:: cerr < < "No data?!" < < std :: endl;
return -1; // 表示失敗
}
return 0;
}
#include "sales_item.h"
#ifndef __C__project__Sales_item__
#define __C__project__Sales_item__
#include < stdio.h >
#include < iostream >
#include < string >
class Sales_item {
// these declarations are explained section 7.2.1, p. 270
// and in chapter 14, pages 557, 558, 561
friend std::istream& operator >?>(std::istream&, Sales_item&);
friend std::ostream& operator< (std::ostream&, const Sales_item&);
friend bool operator< (const Sales_item&, const Sales_item&);
friend bool
operator==(const Sales_item&, const Sales_item&);
public:
// constructors are explained in section 7.1.4, pages 262 - 265
// default constructor needed to initialize members of built-in type
Sales_item() : units_sold(0), revenue(0.0) { }
Sales_item(const std::string &book) :
bookNo(book), units_sold(0), revenue(0.0) { }
Sales_item(std::istream &is) { is > > *this; }
public:
// operations on Sales_item objects
// member binary operator: left-hand operand bound to implicit this pointer
Sales_item& operator+=(const Sales_item&);
// operations on Sales_item objects
std::string isbn() const { return bookNo; }
double avg_price() const;
// private members as before
private:
std::string bookNo; // implicitly initialized to the empty string
unsigned units_sold;
double revenue;
};
// used in chapter 10
inline
bool compareIsbn(const Sales_item &lhs, const Sales_item &rhs)
{
return lhs.isbn() == rhs.isbn();
}
// nonmember binary operator: must declare a parameter for each operand
Sales_item operator+(const Sales_item&, const Sales_item&);
inline bool
operator==(const Sales_item &lhs, const Sales_item &rhs)
{
// must be made a friend of Sales_item
return lhs.units_sold == rhs.units_sold &&
lhs.revenue == rhs.revenue &&
lhs.isbn() == rhs.isbn();
}
inline bool
operator!=(const Sales_item &lhs, const Sales_item &rhs)
{
return !(lhs == rhs); // != defined in terms of operator==
}
// assumes that both objects refer to the same ISBN
Sales_item& Sales_item::operator+=(const Sales_item& rhs)
{
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}
// assumes that both objects refer to the same ISBN
Sales_item
operator+(const Sales_item& lhs, const Sales_item& rhs)
{
Sales_item ret(lhs); // copy (|lhs|) into a local object that we'll return
ret += rhs; // add in the contents of (|rhs|)
return ret; // return (|ret|) by value
}
std::istream&
operator >?>(std::istream& in, Sales_item& s)
{
double price;
in > > s.bookNo > > s.units_sold > > price;
// check that the inputs succeeded
if (in)
s.revenue = s.units_sold * price;
else
s = Sales_item(); // input failed: reset object to default state
return in;
}
std::ostream&
operator< (std::ostream& out, const Sales_item& s)
{
out < < s.isbn() < < " " < < s.units_sold < < " "
< < s.revenue < < " " < < s.avg_price();
return out;
}
double Sales_item::avg_price() const
{
if (units_sold)
return revenue / units_sold;
else
return 0;
}
#endif /* defined(__C__project__Sales_item__) */
五、術(shù)語(yǔ)表
- 參數(shù)(實(shí)參,argument)向函數(shù)傳遞的值。
- 賦值( assignment)抹去一個(gè)對(duì)象的當(dāng)前值,用一個(gè)新值取代之。
- 程序塊(block) 零條或多條語(yǔ)句的序列,用花括號(hào)包圍。
- 緩沖區(qū)(buffer)一個(gè)存儲(chǔ)區(qū)域,用于保存數(shù)據(jù)。I0設(shè)施通常將輸入(或輸出)數(shù)據(jù)保存在一個(gè)緩沖區(qū)中,讀寫緩沖區(qū)的動(dòng)作與程序中的動(dòng)作是無(wú)關(guān)的。我們可以顯式地刷新輸出緩沖,以便強(qiáng)制將緩沖區(qū)中的數(shù)據(jù)寫入輸出設(shè)備。默認(rèn)情況下,讀cin會(huì)刷新cout;程序非正常終止時(shí)也會(huì)刷新cout.
- 內(nèi)置類型(built-in type)由語(yǔ)言定義的類型,如int。
- Cerr一個(gè)ostream對(duì)象,關(guān)聯(lián)到標(biāo)準(zhǔn)錯(cuò)誤,通常寫入到與標(biāo)準(zhǔn)輸出相同的設(shè)備。默認(rèn)情況下,寫到cerr的數(shù)據(jù)是不緩沖的。cerr通常用于輸出錯(cuò)誤信息或其他不屬.于程序正常邏輯的輸出內(nèi)容。
- 字符串字面值常量( character stringliteral)術(shù)語(yǔ)string literal的另-種叫法。cin一個(gè)istream對(duì)象,用來(lái)從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)。
- 類(class)一種用于定義自己的數(shù)據(jù)結(jié)構(gòu)及其相關(guān)操作的機(jī)制。類是C++中最基本的特性之一。標(biāo)準(zhǔn)庫(kù)類型中,如istream和ostream都是類。
- 類類型(class type)類定義的類型。類名即為類型名。
- clog一個(gè)ostream對(duì)象,關(guān)聯(lián)到標(biāo)準(zhǔn)錯(cuò)誤。默認(rèn)情況下,寫到clog的數(shù)據(jù)是被緩沖的。clog通常用于報(bào)告程序的執(zhí)行信息,存入一個(gè)日志文件中。
- 注釋(comment)被編譯器忽略的程序文本。C++有兩種類型的注釋:單行注釋和界定符對(duì)注釋。單行注釋以//開始,從//到行尾的所有內(nèi)容都是注釋。界定符對(duì)注釋以/ 開始,其后的所有內(nèi)容都是注釋,直至遇到 /為止。
- 條件(condition)求值結(jié)果為真或假的表達(dá)式。通常用值0表示假,用非零值表示真。
- cout一個(gè)ostream對(duì)象,用于將數(shù)據(jù)寫入標(biāo)準(zhǔn)輸出。通常用于程序的正常輸出內(nèi)容。
- 花括號(hào)(curly brace)花括號(hào)用于劃定程序塊邊界。左花括號(hào)({)為程序塊開始,右花括號(hào)(})為結(jié)束。
- 數(shù)據(jù)結(jié)構(gòu)(data structure) 數(shù)據(jù)及其.上所允許的操作的一種 邏輯組合。
- 編輯-編譯-調(diào)試( edit-compile-debug)使程序能正確執(zhí)行的開發(fā)過(guò)程。
- 文件結(jié)束符(end-of-file) 系 統(tǒng)特定的標(biāo)識(shí),指出文件中無(wú)更多數(shù)據(jù)了。表達(dá)式(expression) 最小的計(jì)算單元。一個(gè)表達(dá)式包含一個(gè)或多個(gè)運(yùn)算對(duì)象,通常還包含一個(gè)或多個(gè)運(yùn)算符。表達(dá)式求值會(huì)產(chǎn)生一個(gè)結(jié)果。例如,假設(shè)i和j是int對(duì)象,則i+j是一個(gè)表達(dá)式,它產(chǎn)生兩個(gè)int值的和。
- for語(yǔ)句( for statement)迭代語(yǔ)句,提供重復(fù)執(zhí)行能力。通常用來(lái)將一個(gè)計(jì)算反復(fù)執(zhí)行指定次數(shù)。
- 函數(shù)(function)具名的計(jì)算單元。
- 函數(shù)體(function body)語(yǔ)句塊,定義了函數(shù)所執(zhí)行的動(dòng)作。
- 函數(shù)名( function name)函數(shù) 為人所知的名字,也用來(lái)進(jìn)行函數(shù)調(diào)用。
- 頭文件(header) 使類或其他名字的定義可被多個(gè)程序使用的一種機(jī)制。程序通過(guò)#include指令使用頭文件。
- if語(yǔ)句(if statement) 根據(jù)一 個(gè)特定條件的值進(jìn)行條件執(zhí)行的語(yǔ)句。如果條件為真,執(zhí)行if語(yǔ)句體。否則,執(zhí)行else語(yǔ)句體(如果存在的話)。
- 初始化(initialize) 在一個(gè)對(duì)象創(chuàng)建的時(shí)候賦予它一個(gè)值。
- iostream頭文件,提供了面向流的輸入輸出的標(biāo)準(zhǔn)庫(kù)類型。
- istream提供了面向流的輸入的庫(kù)類型。
- 庫(kù)類型(library type)標(biāo)準(zhǔn)庫(kù)定義的類型,如istream.
- main操作系統(tǒng)執(zhí)行一個(gè)C++程序時(shí)所調(diào)用的函數(shù)。每個(gè)程序必須有且只有一個(gè)命名為main的函數(shù)。
- 操縱符(manipulator)對(duì)象,如std:end1,在讀寫流的時(shí)候用來(lái)“操縱”流本身。
- 成員函數(shù)( member function)類定義的操作。通常通過(guò)調(diào)用成員函數(shù)來(lái)操作特定對(duì)象。
- 方法(method)成員函數(shù)的同義術(shù)語(yǔ)。
- 命名空間( namespace)將庫(kù)定義的名字放在一個(gè)單一位置的機(jī)制。命名空間可以幫助避免不經(jīng)意的名字沖突。C++標(biāo)準(zhǔn)庫(kù)定義的名字在命名空間std中。
- ostream標(biāo)準(zhǔn)庫(kù)類型,提供面向流的輸出。
- 形參列表( parameter list) 函數(shù)定義的部分,指出調(diào)用函數(shù)時(shí)可以使用什么樣的實(shí)參,可能為空列表。
- 返回類型(return type)函數(shù)返回值的類型。
- 源文件( source file )包含C++程序的文件。
- 標(biāo)準(zhǔn)錯(cuò)誤(standard error)輸出流,用于報(bào)告錯(cuò)誤。標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤通常關(guān)聯(lián)到程序執(zhí)行所在的窗口。
- 標(biāo)準(zhǔn)輸入(standard input)輸入流,通常與程序執(zhí)行所在窗口相關(guān)聯(lián)。
- 標(biāo)準(zhǔn)庫(kù)(standard library) 一個(gè)類型和函數(shù)的集合,每個(gè)C++編譯器都必須支持。標(biāo)準(zhǔn)庫(kù)提供了支持I0操作的類型。C++程序員傾向于用“庫(kù)”指代整個(gè)標(biāo)準(zhǔn)庫(kù),還傾向于用庫(kù)類型表示標(biāo)準(zhǔn)庫(kù)的特定部分,例如用“iostream庫(kù)”表示標(biāo)準(zhǔn)庫(kù)中定義I0類的部分。
- 標(biāo)準(zhǔn)輸出(standard output) 輸出流,通常與程序執(zhí)行所在窗口相關(guān)聯(lián)。
- 語(yǔ)句(statement) 程序的一部分,指定了當(dāng)程序執(zhí)行時(shí)進(jìn)行什么動(dòng)作。一個(gè)表達(dá)式接一個(gè)分號(hào)就是一條語(yǔ)句;其他類型的語(yǔ)旬包括語(yǔ)句塊、if語(yǔ)旬、for語(yǔ)句和while語(yǔ)句,所有這些語(yǔ)句內(nèi)都包含其他語(yǔ)句。
- std標(biāo)準(zhǔn)庫(kù)所使用的命名空間。std: :cout表示我們要使用定義在命名空間std中的名字cout.
- 字符串常量(string literal) 零或多個(gè)字符組成的序列,用雙引號(hào)包圍("a stringliteral")。
- 未初始化的變量( uninitialized variable )未賦予初值的變量。類類型的變量如果未指定初值,則按類定義指定的方式進(jìn)行初始化。定義在函數(shù)內(nèi)部的內(nèi)置類型變量默認(rèn)是不初始化的,除非有顯式的初始化語(yǔ)句。試圖使用一個(gè)未初始化變量的值是錯(cuò)誤的。未初始化變量是bug的常見成因。
- 變量(variable)具名對(duì)象。:
- while語(yǔ)句( while statement)迭代語(yǔ)句,提供重復(fù)執(zhí)行直至一個(gè)特定條件為假的機(jī)制。循環(huán)體會(huì)執(zhí)行零次或多次,依賴于循環(huán)條件求值結(jié)果。
- ()運(yùn)算符() operator)調(diào)用運(yùn)算符。跟隨在函數(shù)名之后的一對(duì)括號(hào)“()”,起到調(diào)用函數(shù)的效果。傳遞給函數(shù)的實(shí)參放置在括號(hào)內(nèi)。
- ++運(yùn)算符(++ operator)遞增運(yùn)算符。將運(yùn)算對(duì)象的值加1,++i等價(jià)于i=i+1。
- +=運(yùn)算符(+= operator)復(fù)合賦值運(yùn)算符,將右側(cè)運(yùn)算對(duì)象加到左側(cè)運(yùn)算對(duì)象上;a+=b等價(jià)于a=a+b.
- .運(yùn)算符(. operator) 點(diǎn)運(yùn)算符。左側(cè)運(yùn)算對(duì)象必須是一個(gè)類類型對(duì)象,右側(cè)運(yùn)算對(duì)象必須是此對(duì)象的一個(gè)成員的名字。運(yùn)算結(jié)果即為該對(duì)象的這個(gè)成員。
- ::運(yùn)算符(:: operator)作用域運(yùn)算符。其用處之一是訪問(wèn)命名空間中的名字。例如,std::cout表示命名空間std中的名字cout。
- =運(yùn)算符(= operator) 將右側(cè)運(yùn)算對(duì)象的值賦予左側(cè)運(yùn)算對(duì)象所表示的對(duì)象。
- --運(yùn)算符(-- operator)遞減運(yùn)算符。將運(yùn)算對(duì)象的值減1,--i等價(jià)于i=i-1。
- <<運(yùn)算符(<< operator)輸出運(yùn)算符。將右側(cè)運(yùn)算對(duì)象的值寫到左側(cè)運(yùn)算對(duì)象表示的輸出流: (cout<< "hi"表示將hi寫到標(biāo)準(zhǔn)輸出。輸出運(yùn)算符可以連接: cout <<"hi" << "bye"表示將輸出hibye.
運(yùn)算符(>> operator)輸入運(yùn)算符。從左側(cè)運(yùn)算對(duì)象所指定的輸入流讀取數(shù)據(jù),存入右側(cè)運(yùn)算對(duì)象中: cin>> i表示從標(biāo)準(zhǔn)輸入讀取下一個(gè)值,存入i中。輸入運(yùn)算符可以連接: cin>> i>> j表示先讀取一個(gè)值存入i,再讀取一個(gè)值存入j。
- #include頭文件包含指令,使頭文件中代碼可被程序使用。
- ==運(yùn)算符(== operator)相等運(yùn)算符。檢測(cè)左側(cè)運(yùn)算對(duì)象是否等于右側(cè)運(yùn)算對(duì)象。
- !=運(yùn)算符(!= operator)不等運(yùn)算符。檢測(cè)左側(cè)運(yùn)算對(duì)象是否不等于右側(cè)運(yùn)算對(duì)象。
- <=運(yùn)算符(<= operator)小于等于運(yùn)算符。檢測(cè)左側(cè)運(yùn)算對(duì)象是否小于等于右側(cè)運(yùn)算對(duì)象。
- <運(yùn)算符(< operator)小于運(yùn)算符。檢測(cè)左側(cè)運(yùn)算對(duì)象是否小于右側(cè)運(yùn)算對(duì)象。
=運(yùn)算符(>= operator)大于等于運(yùn)算符。檢測(cè)左側(cè)運(yùn)算對(duì)象是否大于等于右側(cè)運(yùn)算對(duì)象。
運(yùn)算符(> operator)大于運(yùn)算符。檢測(cè)左側(cè)運(yùn)算對(duì)象是否大于右側(cè)運(yùn)算對(duì)象。
評(píng)論
查看更多