成果基礎(chǔ)教程_第1頁
成果基礎(chǔ)教程_第2頁
成果基礎(chǔ)教程_第3頁
成果基礎(chǔ)教程_第4頁
成果基礎(chǔ)教程_第5頁
免費預(yù)覽已結(jié)束,剩余159頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

C++是由BjarneStroustrup于1979年開始在貝爾開發(fā)的一個中級編程語言。C++可運行在不同的平臺,如Windows,MacOS和各種版本的UNIX。本文將通過簡單實用的方法來帶你學習C++編程語言適用本文是為新手所準備的,可以幫助他們理解從基本到高級的有關(guān)C++編程語言的概學習前 第1 C++基 概 開發(fā)環(huán) 基本語 注 數(shù)據(jù)類 變量類 變量作用 常 操作 循環(huán)的類 決策語 函 數(shù) 數(shù) 字符 指 .................................................................................................................................................................日期和時 結(jié)構(gòu) 第2 C++面 類和繼承重載多態(tài)數(shù)據(jù)數(shù)據(jù)接口(抽象類第3章C++進階........文件異常動態(tài)命名模板預(yù)處信號多線程Web編程11C++概C++是靜態(tài),可編譯,通用,大小寫敏感,格式的編程語言,它支持程序化,面象的,和泛型編程方C++被看作是中間層語言,因為它同時包含了低級語言和高級C++是于1979年在新澤西的茉莉山丘的貝爾由BjarneStroustrup開發(fā)的,它是C語言的加強版,最開始它被稱作“CwithClasses”,但是后來在1983年被更名為C++。C++是C語言的超集,也就是說任何合法的C程序它同時也是合法C++注意:編程語言使用靜態(tài)類型指的是對于類型檢查是在編譯的時候進行,而不是在面象編C++完全支持面象編程,它包含了面象開發(fā)的四個特性封數(shù)據(jù)繼多標準的C++包含三個重要的部分C++標準庫提供了豐富的函數(shù)操作,例如對文件和字符串的操ANSIANSIC++也就是說,你所編寫的代碼利用了微軟的編譯器編譯之后沒有錯誤,那么它在Mac,NIX,Windowsbox,或者Alpha上同樣沒有錯誤。ANSI標準到最近基本上還保持不變,并且所有的C++的編譯器生成商支持ANSI標準學習學習C++的時候最重要的事情是關(guān)注與它的概念,而不是被語言的具體技術(shù)細節(jié)給學門編程語言的目的是成為一名更優(yōu)秀的程序員,也就是說在設(shè)計、實現(xiàn)一個新的系統(tǒng)和舊的程序C++種編按照Fortran,C,Smalltalk何語言的風格進行編程。每種編程風格均可C++C++被幾十萬的程序員所使用,它是進行應(yīng)用程序開發(fā)中必不可少的一部C++被大量的使用在編寫設(shè)備驅(qū)動程序,和那些有實時性限制,需要直接操作硬件的不管是使用Macintosh運行Windows系統(tǒng)的電腦的用戶都直接的使用了C++,因為這些系統(tǒng)的主要用戶界面是由C++編寫的。開發(fā)如果你想要本地的C++開發(fā)環(huán)境,你應(yīng)該確保如下的兩個已經(jīng)安裝在你的電腦上文本編輯文本編輯器用來編寫程序。舉幾個編輯器的例子WindowsNotePad,一些操作系EditBrief,Epsilon,EMACS,和vim或者vi。文本編輯器的名稱和版本在不同的操作系統(tǒng)上可能有差異。例如,Windows系統(tǒng)上可用NotePadWindows和Linux或者UNIX上均可以使用vim或者vi。你用編輯器創(chuàng)建的文件稱為C++言,這些文件的很明顯都cpp,.cp,或者.c在開始編程之前,請確保你有一個文本編輯器可用,并且你有足夠的經(jīng)驗編寫C++程序C++C++編譯器的作用是編譯你的源代碼,最終將它轉(zhuǎn)換成可執(zhí)行大多數(shù)C++器并不在意你的源代碼文件的擴展名,如果你沒有指定它的擴展名,許多編譯器都會用.cpp最常用并且免費的編譯器是GNUC/C++另外如果你有其他的操作系統(tǒng),你也可以使用HP者InstallingGNUC/C++UNIX/Linux安如果你使用Linux或者UNIX系統(tǒng),通過在命令行中輸入如 令檢查你的系統(tǒng)是否已經(jīng)安裝了$$g++-如果已經(jīng)安裝了GCC,那么在控制臺中應(yīng)該輸出類似如下的信UsingUsingbuilt-in:i386-redhat-Configuredwith:../configure--prefix=/usrThreadmodel:gccversion4.1.220080704(RedHat4.1.2-如果GCC沒有安裝,那么你需要自己手動安裝,你可以從這里獲得更詳細的說MacOSX如果你使用MacOSX系統(tǒng),那么得到GCC最方便的方式是從蘋果的上Xcode開發(fā)環(huán)境,按照如下的Xcode現(xiàn)在可用的是: Windows安為了在Windows上安裝GCC,你需要安裝MinGW。為了安裝MinGW,你可以MinGW的主接著MinGW頁那個。版的MinGW安裝程序,這個程序的名稱應(yīng)該是類似于MinGW-<版本號>.exe這樣的形式。在安裝MinGW時候,最低限度,你必須要安裝gcc-core,gcc-g++,binutils,和MinGW添加你安裝MinGW的子 bin的路徑到你的PATH環(huán)境變量中,這樣你就可以通過在命令行中輸入MinGW提當安裝完成之后,你可以在Windows令行中運行GNU提供的幾個工具,類似于:gcc,g++,ar,ranlib,dlltool等。基本C++程序,它可以被定義為一個對象集合,彼此之間通過調(diào)用對方的方法進行通信。現(xiàn)在讓簡要地看看類,對對象狀態(tài)和行為。例子:一只狗擁有的狀態(tài)——顏色、名稱、品種以及行為——搖尾巴,吠首先讓看一個簡單的示例代碼,這個程序會輸出oWorld#include#includeusingnamespace//main()iswhereprogramexecutionint{cout<<"return}oWorld";//o讓來看下以上程序的各個部分C++義了幾個頭,其中包含的信息對你的程序要么是必要的或要么是有用的。ostream>是必要的usingnamespacestd這一行告訴編譯器使用std名空間。命名空間是C++的特下一行main()iswhereprogramexecutionbegins是一個在C++用來表示注釋的語句。單可以使用//進行單行注釋。intmain()這一行是程序的主方法,也是程序執(zhí)行 cout<<"Thiscout<<"ThisisC++

”ThisisC++會 ”ThisisC++下一行return0會終止main函數(shù)的執(zhí)行,并將0返回給調(diào)用進程C++保存該文件,并以o.cpp為該文件名 為你保存o.cpp這個文件 在命令行中輸入g++o.cpp,接著按下回車按鍵,編譯你的程序。如果你的代碼中沒有錯誤,在命令行控制窗口中提示符將會跳轉(zhuǎn)到下一行,并將生成一個a.out的可執(zhí)行文件。接著,輸入a.out來運行你的程序你將會在你當前的窗口中看到輸出oWorld$$ $o確保g++在你的路徑和你 包含文件o.cpp運行它。你可以編譯C/C++程序使用makefile。C++C++終止符。也就是說,每一個獨立語句都必須以分號結(jié)束。它表明了一個邏輯實體的結(jié)束。xx=y=y+1;{{cout<< oWorld";//oreturnreturn}C++并不是把一行的結(jié)束作為一個終結(jié)符。由于這個原因,它也就不在意你在一行中哪里放置你的語xx=y=y+1;這個也等同于x=y;yx=y;y=y+1;add(x,C++一個C是用來標識一個變量、函數(shù)、類、模塊,或任何其他用戶定義的項目。一個標識符以字母AZ或者az或下劃線(_)開始,接著后面是零個或多個字母,下劃線,數(shù)字(09C++不允許用一些特殊符號作為標識符,如@、$、%。C是一種區(qū)分大小寫的編程語言。因此,Manpoweranpower在C++中是兩個不同的標識符如下是一些合法的標識符的例子move_namej C++如下的列表展示了C++中的關(guān)鍵字。這些關(guān)鍵字不能用作常量或變量或其他標識符以下是最常用的三元符序列 #\^[]|{}~所有的編譯器不支持三元符,也不建議使用,因為它們很容易讓人C++只包含空格,可能有注釋的行被稱為一個空行,并且C++編譯器會完全忽略空格是C++用的術(shù)語來描述空格、制表符、換行符和注釋??崭駥⒁徊糠肿⑨屌c其他的部分分隔開,從而使編譯器能夠識別一個元素在語句中的位置,例如int的結(jié)束,和下一個元素的開始位置。因此,在下面的語句intintintage須有至少一個空格字符(通常是一個空格),這樣編譯器才能夠區(qū)分它們。另一方面,在如fruitfruit=apples+oranges://Getthetotalfruit或者apples不需要空格的,盡管這樣做不會有什么影響。如果為了使程序閱注程序注釋是說明性語句,您可以在你編寫的C碼中添加注釋,從而幫助任何人閱讀源代碼。所有的編程語言C++支持單行和多行注釋。在注釋中可以使用所有的字符,并且它們都將會被C++C++注釋以*開始和以*/結(jié)束/*This/*Thisisacomment/*C++comments *spanmultiple注釋還可以以//開始,一直到行的結(jié)束位置。例#include#includeusingnamespace{cout<< oWorld";//oreturn}上面的代碼編譯時,將忽略//printsoWorld,最終可執(zhí)行程序?qū)a(chǎn)生以下結(jié)果oo/*和*/注釋,//字符沒有特殊的意義。在//注釋的,/*和*/沒有特殊的意義。因此,您/*/*Commentoutprintingocout<< oWorld";//o數(shù)據(jù)C++給程序員提供了一系列豐富的內(nèi)置類型以及用戶定義的數(shù)據(jù)類型。下表列出了七個基本的C++數(shù)據(jù)類型類 關(guān)鍵FloatingDoublefloatingWide類 長 范-127-127者0-unsigned0-signed-127--2147483648-unsigned0signed-2147483648-short-32768-unsignedshort0-signedshort-32768-long-2,147,483,647-signedlong和longint一unsignedlong0-+/-3.4e+/-38(~7位數(shù)字+/-1.7e+/-308(~15位數(shù)字long+/-1.7e+/-308(~15位數(shù)字2或者41#include<iostream>using#include<iostream>usingnamespaceint{cout<<"Sizeofchar:"<<sizeof(char)<<endl;cout<<"Sizeofint:"<<sizeof(int)<<endl;cout<<"Sizeofshortint:"<<sizeof(shortint)<<endl;cout<<"Sizeoflongint:"<<sizeof(longint)<<endl;cout<<"Sizeoffloat:"<<sizeof(float)<<endl;cout<<"Sizeofdouble:"<<sizeof(double)<<endl;cout<<"Sizeofwchar_t:"<<sizeof(wchar_t)<<endl;return0;}這個示例使用endl,這個表示在每一行之后一個換行符,<<操作符被用來將多個值輸出到屏幕上。也使用sizeof()函數(shù)來獲得各種數(shù)據(jù)類型的大小。SizeSizeofchar:1Sizeofint:Sizeofshortint:2Sizeoflongint:4Sizeoffloat:4Sizeofdouble:8Sizeofwchar_t:typedef你可以使用typedef的數(shù)據(jù)類型起一個新的名稱。下面是一個typedef義一個新類型的簡單typedeftypetypedeftype例如,下面告訴編譯器,feet是int的另一個名字typedefinttypedefint現(xiàn)在,下面的是完全合法和創(chuàng)建一個整數(shù)變量稱為feetfeet創(chuàng)建一個枚舉類型需要使用關(guān)鍵字enum。枚舉類型的一般形式 m-name{listofnames}var-在這里,enum-name是枚舉類型名。listofname是由逗號分例如,下面的代碼定義了一個稱為color枚舉類型,并且變量c是一個color枚舉變量。最后,c被賦值為“blue”。enumenumcolor{red,green,blue}c;c=blue;默認情況下,枚舉類型花括號中第一個0,第二個變量賦值為1,第三個賦值為2,依此類推。但是你也可以給某個指定變量一個初始值。例如,在下面的枚舉類型,green將會被初始化為5。enumenumcolor{red,green=5,blue這里,blue的值將會變成6,因為每個變量都會比它前一個變量大1變量變量名給提供了在程序中可以使用的空間信息。每個變量在C++中都有一個特定的類型,它決定變量在同,因為C++是區(qū)分大小寫的:C++中有以下基本變量類型,在上一節(jié)已經(jīng)介紹過類 描的值為true或者通常是8位(一位字節(jié))。它機器中最常用的整數(shù)類型單精度浮點類型的值雙精度浮點類型的值代表著缺失類型一個寬字符類型C++還允許定義各種其他類型的變量,在后續(xù)章節(jié)將會介紹的,比如Enumeration,指針,數(shù)組,引下一節(jié)將介紹如何定義,和使用各種類型的變量C++中變量的typetype在這里,type必須是一個有效的C++數(shù)據(jù)類型,包括char,w_char,int,float,double,bool或者任何用戶自定義的對象等。variable_list要包含一個或多個由逗號分隔的標識符。如下是一些有效的 inti,j,k;charc,ch;floatinti,j,k;charc,ch;floatf,salary;doubled;inti,j,k;這一行同時和定義了變量i,j和k,這條語句指示編譯器創(chuàng)建類型為int,名稱為i,j和typetypevariable_name=如下是一些示例externexternintd=3,f= //declarationofdandintd=3,f=5; //definitionandinitializingdandf.bytez=22; //definitionandinitializesz.charx= //thevariablexhasthevalue沒有初始化的定義:靜態(tài)類型的變量會隱式NULL(所有位值為0),而其他的所有變量的初始值是未C++中變當你使用多個文件,并且你己定義的變量放其中一文件里,變量的將對程的很有用??梢允褂胑xtern關(guān)鍵字來個放在任何位置的量。雖你在你的C++程中你以一個變多次但它示試試下面的例子,一個變量已經(jīng)在頂部進行 ,但同時它也在main函數(shù)中被定義了#include<iostream>using#include<iostream>usingnamespace//Variabledeclaration:externinta,b;externintc;intmain{//Variabledefinition:inta,b;intc;floatintc;floatf;//actuala=b=c=a+cout<<c<<endl;f=70.0/3.0;cout<<f<<endlreturn}上面的代碼編譯和執(zhí)行后////functiondeclarationintfunc();int{//functioncallinti=}//functiondefinitionintfunc(){return}左值和右C++中有兩種表達intintg=但如下卻不是一個有效的賦值語句,會產(chǎn)生1010=變量作變量作用域就是指變量在程序中能夠操作的區(qū)域,通常按照在程序中不同地方可以分為如下三類局部變量:在函數(shù)中或者由花括號括起來的代碼塊中形式變量:在函數(shù)的參數(shù)中,也叫形參全局變量:在所有函數(shù)之外的變量關(guān)于函數(shù)及函數(shù)參數(shù)的內(nèi)容會在后續(xù)章節(jié)中學習。這里首先學局部變量和全部變量的相關(guān)內(nèi)容在函數(shù)或代碼塊的變量稱為局部變量。他們在函數(shù)體內(nèi)后僅能被其的所在函數(shù)體的后續(xù)語#include<iostream>using#include<iostream>usingnamespaceintmain{//Localvariabledeclaration:inta,b;int//actuala=b=c=a+cout<<c;return0;}#include<iostream>using#include<iostream>usingnamespace//Globalvariabledeclaration:intg;intmain{//Localvariabledeclaration:inta,b;//actuala=b=g=a+b;cout<<return}#include<iostream>using#include<iostream>usingnamespace//Globalvariabledeclaration:intg=20;intmain{//Localvariabledeclaration:intg=10;cout<<return}數(shù)據(jù)類 000 常整數(shù)常量可以是十進制、八進制或十六進制常量。對于十六進oxOX可以用O綴來整數(shù)常量也可以與U和L后綴一起搭配使用,相應(yīng)的來表示無符號和長整型。后綴212212215u0xFeeL//合0788不是合法的八進 U后綴不能重8585進 進 六進3030u//符號整30l// 符號整分,小數(shù)部分,或兩者兼而有之。有符號指數(shù)可以用e或E來表示。下面是一些浮點常量的一些例子 314159E-5L//510E合法數(shù)部分210f合法有整數(shù)部.e55合法整數(shù)或小數(shù)部C++中只有兩個布爾類型的常量,他們都是標準C++中的truefalse:代表否字符常量應(yīng)該用單引號括起來。如果字符常L頭(僅大寫),那么它將是一個寬字符常量且需要使用wchar_t類型的變量來。否則,它將是個窄字符常量且在char類型的變量中。字符常量可以還是一個普通字符(比如'x')、轉(zhuǎn)義字符('\t')或者是一個通用字符(比如'\C++些使用反斜杠標志的字符,他們具有特殊的意義,且可以用于表示換行(\n)tab(\t)。下轉(zhuǎn)義字 意\字'字''字?問號警退換換回橫向八進制的一到三下面是一些展示轉(zhuǎn)義字符的例子#include<iostream>using#include<iostream>usingnamespaceint{cout<<" return0;} o, o,\ o,""d"如下為C++中的兩個簡#define:預(yù)處#include<iostream>using#include<iostream>usingnamespace#defineLENGTH#defineWIDTH5#defineNEWLINE'\n'int{intarea=LENGTH*cout<<area;cout<<NEWLINE;return}const可以使用const前綴來特殊類型的常量,比如constconsttypevariable=下面是比較具體#include<iostream>using#include<iostream>usingnamespaceint{constintLENGTH=10;constintWIDTH=5;constcharNEWLINE='\n';intarea;area=LENGTH*cout<<area;cout<<NEWLINE;return}注意:在程序首部定義常量是一個良好的編 修飾符的C++char、intdouble型的數(shù)據(jù)可以在其前面使用修飾符。修飾符用于更改數(shù)據(jù)變量的意義以實現(xiàn)變數(shù)據(jù)類型的修飾signed:有符號unsigned:無符號類shortsigned、unsigned、longshort以應(yīng)用到整型基礎(chǔ)類型。此外,signedunsigned到char類型,long可以應(yīng)用到double類型。signed和unsigned也可以作為long或short修飾符的前綴。比如,unsignedlongC++也允許使用簡化字符的方式來unsigned、short或long整數(shù)。程序員可以僅使用unsigned、short或long不使用int型變量。這里的int被簡化掉了。比如,下面的兩句程序均實現(xiàn)對unsignedunsignedx;unsignedx;為了理解C++中signed和unsigned整數(shù)修飾符的不同。可以嘗試著運行下面的#include<iostream>using#include<iostream>usingnamespace/*Thisprogramshowsthedifference*signedandunsignedint{shortint //asignedshortshortunsignedintj;//anunsignedshortintegerj=50000;i=cout<<i<<""<<returnreturn}上述程序執(zhí)行結(jié)-15536-15536上述結(jié)果的背后原因是,unsigned值為5000,當時short就是-15536表示C++類型限定符提供了關(guān)于變量保存值更豐富的限定 意const類型修飾的對象在起運行周期內(nèi)不可volatile修飾符用于提示編譯器,程序中某個變量值的改變可能不是程序restrict修飾的指針意味著所有修改該指針所指向內(nèi)容的操作全部都是基于該指針的。僅在C99標準中增加了這個修飾符。類auto類auto類型是所有局部變量的默認類型{{intmount;autointmonth;}上面的例子中定義了兩個相同類型的變量,auto僅能運用于函數(shù)內(nèi)的局部變量register類register類型用于定義于寄存器中的變量而不是內(nèi)存中。這意味著該變量的最大尺寸將是寄存器的大?。ㄍǔJ且粋€字),并且不能使用'&'尋址運算符進行操作(因為它沒有內(nèi)存地址)。{{register;}register類型應(yīng)該僅應(yīng)用于需要快速的變量,比如計數(shù)器。需要注意的是,定義register類的量不意味著該變量一定就在寄存器中,這僅僅意味著需要按照硬件以及具體實現(xiàn)的限制來判定到底是不是在寄存器中。static類static類的變意味該變將會始至地存在程序整個命周內(nèi),不會隨每次到所static修飾符也可以應(yīng)用于全局變量。當全局變量使用該修飾符后,該全局變量就被限制在其的文件內(nèi)在C++中,當static應(yīng)用于類的數(shù)據(jù)成員時,它所起到的作用是多個該類的成員變量都是指的同一#include#include//Functiondeclarationvoidfunc(void);staticintcount=10;/*Globalvariable*/{{}return}//Functiondefinitionvoidfunc(void){staticinti=5;//localstaticvariablestd::cout<<"iis"<<istd::cout<<"andcountis"<<count<<}iisiis6andcountis9iis7andcountis8iis8andcountis7iis9andcountis6iis10andcountis5iis11andcountisiis12andcountisiiis13andcountis2iis14andcountis1iis15andcountisextern類extern類型用于使全局變量的對所有程序文件可見。如果前面已經(jīng)定義了一個變量名,那么就不能再使用extern來同一變量名的變量了。當你有多個程序文件且需要定義一個可以在其他文件用可以到的變量或函數(shù)時,就可以在其他文件中使用extern該變量或函數(shù)的。extern修飾符通常被應(yīng)用于多個文件中需要共享相同的全局變量或函數(shù)的情況。一#include#includeintcountexternvoid{count=5;}externintcount;void{std::cout<<"Countis"<<count<<}這里的extern關(guān)鍵用于count變量已經(jīng)在其他文件中定義了。按照下面的方式來編譯$g++$g++main.cppsupport.cpp-o這樣會生出一個write可執(zhí)行文件,運行它并看他的mutable類mutable修飾符應(yīng)用于類對象,將會在后續(xù)章節(jié)中詳細。它允許對象的成員可以覆蓋常量。也即是說,mutable成員可以被const成員函數(shù)所修改。操作操作符就是告訴編譯器來執(zhí)行數(shù)學或邏輯運算操作的符號。C++常豐富的內(nèi)置操作符。提供如下幾類的操作數(shù)算操作關(guān)系運算操作邏輯運算操作賦值運算操作復(fù)合運算操作數(shù)算操作下面的就是C++語言所支持的數(shù)算操作符:假設(shè)變量A10,變量B20,那么:運算 描 例+兩個運算數(shù)相A+B=-第一個運算數(shù)減去第二個運A-B=-*運算數(shù)相A*B=/B/A=%模數(shù)運算符,整B%A=增量運算符,整數(shù)值逐次加A++=-減量運算符,整數(shù)值逐次減A--=下面的就是C++語言所支持的關(guān)系運算操作符:假設(shè)變量A10,變量B20,那么運算符描 例檢查兩個運算數(shù)的值是否相等,如果是,則結(jié)果為A==B檢查兩個運算數(shù)的值是否相等,如果不相等,則結(jié)果為A!=B>檢查左邊運算數(shù)是否大于右邊運算數(shù),如果是,則結(jié)果為A>B為<檢查左邊運算數(shù)是否小于右邊運算數(shù),如果是,則結(jié)果為A<B為檢查左邊運算數(shù)是否大于或者等于右邊運算數(shù),如果是,則結(jié)果為A>=B檢查左邊運算數(shù)是否小于或者等于運算數(shù),如果是,則結(jié)果為A<=B下面的就是C++語言所支持的邏輯運算操作符:假設(shè)變量A1,變量B0,那么:運算 描 例稱為邏輯與運算符。如果兩個運算數(shù)都非零,則結(jié)果為trueA&&B為稱為邏輯或運算符。如果兩個運算數(shù)中任何一個非零,則結(jié)果為trueA||B為!稱為邏輯非運算符。用于改變運算數(shù)的邏輯狀態(tài)。如果邏輯狀true,則通過邏輯非運算符可以使邏輯狀態(tài)變?yōu)閒alse!(A&&B 00000010111111010011假設(shè)變量A60,變量B13,那么下面的就是C++語言所支持的位運算操作符:假設(shè)變量 60,變量 AA=0011B=0000A&B=0000A|BA|B=0011`A^B`=0011~A=1100運算 描 例&A&B=12|A|B=^算是指第一個參數(shù)或者第二個參數(shù)為true,并且不包括兩個參數(shù)都為true的情(A^B)=~~B=-6102,向左移動兩個二進制位相當于將該數(shù)乘以4,以此類A<<1定的位數(shù)。為了保持運算結(jié)果的符號不變,左邊二進制位補0或1取決于原參數(shù)的符號位。如果第一個運算數(shù)是正的,運算結(jié)果最補0;如果第一個運算數(shù)負的,運算結(jié)果最補1A>>1=稱為0補最無符號右移運算符。這個運算符與>>運算符相像,除了位移后左邊A>>>=運算 描 例=CABA+B給CC+=A相當于C=C-C-=A相當于C=C-C*=A相當于C=C*除等賦值運算符除以右邊運算數(shù)并將運算結(jié)果賦值給左C/=A相當于C=CC%=A相當于C=C左移且賦值運算C2當于CC右移且賦值運算C2當于CC位與且賦值運算C&=2相當于C=C&位異或且賦值運C^=A相當于C=C^位或且賦值運算C|=A相當于C=C|下面是C++支持的其他運算符操作 描sizeof操作符返回變量占用內(nèi)存的大小。比如,sizeof(a),a是一個整數(shù)時,返回條件?X:條件操作符:如果條件判斷為true,則返回X,否則返回,.(點箭轉(zhuǎn)轉(zhuǎn)換操作符:可以將數(shù)值類型轉(zhuǎn)成其他類型,比如,int(2.2000)將返回&取地操作符:可以返回一個變量的地址。比如,&a將會返回變量實際的*指針操作符:指向一個變量。比如*var意味著指向變量C++比如x=7+3*2,這里x的值是13而不是20,因為乘法優(yōu)先級比加法高。所以應(yīng)該先執(zhí)行3乘2,然后再加分 操作 操作順后綴()[]->.++-從左一元+-!~++--(type)*&從右乘*/從左加+從左移<<從左相==從左比<<=>從左位&從左異^從左位|從左邏輯從左邏輯從左條從左賦=+=-=*=/=%=>>=<<=&=^=從右逗,從左循環(huán)的C++語言支持下方的循環(huán)類型來滿足循環(huán)的需求。點擊查看詳細情況循環(huán)類 描while循當給定條件為true時,執(zhí)行循環(huán)體。在每次執(zhí)行循環(huán)體前都檢查條件是否為truefor循switch語一個switch語句允許一個變量針對多個不同的值分別進行驗證是否滿足do…while循與loop循環(huán)類似,不同的是在循嵌套可以嵌套for或loop循環(huán)來多C++語言支持下方的循環(huán)控制語句。點擊查看詳細情況循環(huán)語 描終止當前l(fā)oop或switch代碼塊,并且跳出后執(zhí)行后續(xù)如果循環(huán)條件無法變?yōu)閒alse話,那么該訓話那就是無窮循環(huán)。for實現(xiàn)無窮循環(huán)。for#include<iostream>using#include<iostream>usingnamespaceintmain{for(;;{printf("Thisloopwillrun}return}當條件判斷語句置空后,就默認是true也可以保留初始化和遞增表達式,但是C++用for(;;)來表達無窮循環(huán)。注意:可以通過Ctrl+C的方式?jīng)Q策C++編程語言提供以下類型的決策語句。單擊以下來查看它們的細節(jié)語 描if語一個if語句由一個布爾表達式及緊隨其后的一個或多個語句if…else語句一個if語句當執(zhí)行的布爾表達式為假時,可以在后面伴隨著一個可選的else語句switch語一個switch語句允許一個變量針對多個不同的值分別進行驗證是否滿足嵌套的if語你可以使一個if或者elseif嵌套在另一個if或elseif嵌套的switch語你可以一個switch語句中嵌套使用另一個switch語句中一章中有可以用來替換if...else語句的覆蓋條件語句?:。它具Exp1Exp1?Exp2:其中Exp1,Exp2和Exp3是表達式。注意冒號的使用和它的算方式為:首先計算Exp1。如果Exp1則計算Exp2整個值,如果Exp1為假,則計算Exp3的值,并且將其作為這個表達式的值。函函數(shù)是執(zhí)行某個任務(wù)的一組語句。每個C++至少具有一個main(),所有最瑣碎的程序可以定義額一個函數(shù)用來告訴編譯器函數(shù)的名字,返回值類型,和參數(shù)。一個函數(shù)的定義提供了函數(shù)的實際函數(shù)C++提供了眾多的可以被您的程序直接調(diào)用的內(nèi)置功能。例如,用strcat兩個字符串,memcpy()函數(shù)可以將一個內(nèi)存位置的內(nèi)容到另一個內(nèi)存位置,還有的函數(shù)。C++函數(shù)的定義的一般return_typereturn_typefunction_name(parameterlist{bodyofthe}一個C++函數(shù)的定義由一個函數(shù)頭和一個函數(shù)體組成。以下是一個函數(shù)的返回個函數(shù)可能返回一個return-type該函數(shù)返回的值的數(shù)據(jù)類型。有些函數(shù)執(zhí)行所需的操作不返回一個值,在這種情況下,return-type是關(guān)鍵字void.函數(shù)名稱:這是函數(shù)實際的名字。函數(shù)名稱和參數(shù)列表一起構(gòu)成了這個函參數(shù)就像一個占位符。當調(diào)用參數(shù)時,你將把值傳遞給該參數(shù)。這個值稱為實際參數(shù)或參數(shù)。參函數(shù)體:函數(shù)體包含定義函數(shù)做什下面是一個叫做max()的函數(shù)的源代碼。這個函數(shù)包含num1和num2兩個參數(shù),并返回兩者之間////functionreturningthemaxbetweentwointmax(intnum1,int{//localvariabledeclarationintresult;if(num1>num2)result=num1;result=return}return_typereturn_typefunction_name(parameterlist對于上述定義的max()函數(shù),以下是這個函數(shù)的intintmax(intnum1,intintmax(int,intmax(int,下,你應(yīng)該在調(diào)用該函數(shù)的文件的頂部這個函數(shù)。當你C++出這個函數(shù)應(yīng)該做什么的一個定義。若要使用一個函數(shù),你將需要調(diào)用或喚起這#include<iostream>using#include<iostream>usingnamespace//functionintmax(intnum1,intintmain{//localvariableinta=100;intb=200;intret;//callingafunctiontogetmaxvalue.ret=max(a,b);cout<<"Maxvalueis:"<<ret<<return}//functionreturningthemaxbetweentwonumbersintmax(intnum1,intnum2){//localvariabledeclarationintresult;if(num1>num2)result=num1;result=return}我將max()函數(shù)跟在main()函數(shù)后面然后編譯源代碼。當運行最終可執(zhí)行文件時,它將產(chǎn)生以下MaxMaxvalueis:通過默認情況下,C++使用通過值調(diào)用來傳遞參數(shù)。一般情況下,這意味著,在函數(shù)的代碼不能改變用來調(diào)用函數(shù)的參數(shù)的值,在上面提到的例子中,當調(diào)用max()函數(shù)時使用了。當你定義一個函數(shù)時,你可以為每個最后的參數(shù)指定一個默認值。當調(diào)用函數(shù)時,如果對應(yīng)的參數(shù)為空時,將使這是在函數(shù)定義中通過使用賦值運算符和在函數(shù)定義中進行參數(shù)賦值完成的。如果當調(diào)用該函數(shù)時,該參數(shù)的值沒有被傳遞,則使用默認給定的值,但如果指定了一個值,這個默認值被忽略,而使用傳遞的值。請考慮下面的#include<iostream>using#include<iostream>usingnamespaceintsum(inta,int{intresult=a+b;return(result);}intmain{{//localvariableinta=100;intb=200;intresult;//callingafunctiontoaddthevalues.result=sum(a,b);cout<<"Totalvalueis:"<<result<<//callingafunctionagainasfollows.result=sum(a);cout<<"Totalvalueis:"<<result<<return}TotalTotalvalueis:300Totalvalueis數(shù)當使用數(shù)字時,通常使用原始數(shù)據(jù)類型,例如int,short,long,float和double等。數(shù)字數(shù)據(jù)類型,它們的可能值和取值范圍在C++數(shù)據(jù)類型時已經(jīng)解釋了。C++#include#includeusingnamespaceintmain{//numberdouble//numbers=i=l=f=d=//numbercout<<"shorts:"<<s<<endl;cout<<"inti:"<<i<<endl;cout<<"long l:"<<l<<endl;cout<<"floatf:"<<f<<cout<<"doubled:"<<d<<return}當上述代碼被編譯執(zhí)行時,它將產(chǎn)生下面的shortshortsinti lfloatfdoubledC++中的數(shù)您除了可以創(chuàng)建各種各樣的函數(shù)外,C++些你可以使用的已經(jīng)存在的函數(shù)。這些函數(shù)在標準的CC++可以使用,被成為內(nèi)置函數(shù)。這些函數(shù)都可以包含在您的程序中,然后使C++具有一套豐富的數(shù)算,可以運用在各種各樣的數(shù)字上。下表中列出了一些在C++中可以使用的內(nèi)置數(shù)學要利用這些函數(shù),你需要包括<cmath這個序號函數(shù)和功能1doublecos(double);這個函數(shù)輸入一個角度(作為一個雙精度)并返回2doublesin(double);這個函數(shù)輸入一個角度(作為一個雙精度)并返回3doubletan(double);這個函數(shù)輸入一個角度(作為一個雙精度)并返回4doublelog(double);這個函數(shù)輸入一個數(shù)字并返回該數(shù)字的5doublepow(double,double);第一個參數(shù)是你想要增長的數(shù)二個參數(shù)是你想要將它增長的倍數(shù)6doublehypot(double,double果你向該函數(shù)傳遞一個直角三角形的兩個邊的長度,它將返回你的直角7doublesprt(double);您向該函數(shù)傳遞一個參數(shù),它將給你這個數(shù)字的平8intabs(int);這個函數(shù)返回傳遞給該函數(shù)的整數(shù)9doublefabs(double);這個函數(shù)返回傳遞給該函數(shù)的任何十進制數(shù)的絕對doublefloor(double);查找小于或者等于輸入?yún)⒁韵率且粋€用來說明少數(shù) #include<iostream>#include<cmath>using#include<iostream>#include<cmath>usingnamespacestd;intmain{//numberdefinition:shorts=10;inti=- l=floatfloatf=230.47;doubled=200.374;//mathematicalcout<<"sin(d):"<<sin(d)<<endl;cout<<"abs(i):"<<abs(i)<<endl;cout<<"floor(d):"<<floor(d)<<endl;cout<<"sqrt(f):"<<sqrt(f)<<endl;cout<<"pow(d,2):"<<pow(d,2)<<return}sign(d)sign(d):-abs(i)floor(d)sqrt(f)pow(d,2)C++在很多情況下,您會希望生成一個隨機數(shù)字。這里有兩個你需要知道的隨機數(shù)字的生成函數(shù)。第一個是rand(),這個函數(shù)只返回一個偽隨機數(shù)。要解決這個問題的方式是,首先調(diào)用srand()函數(shù)。以下是一個用來產(chǎn)生幾個隨機數(shù)字的簡單例子。這個示例使用time()取在您的系統(tǒng)時間中的秒數(shù)來隨機的生成rand()函數(shù):#include<ctime>#include<cstdlib>usingnamespaceintmain{int//setthesrand((unsigned)time(NULL)/*generate10randomnumbers.*/for(i=0;i<10;i++){{//generateactualrandomnumberj=rand();cout<<"RandomNumber:"<<j<<}return}當上述代碼被編譯執(zhí)行時,它將產(chǎn)生下面的NumberNumberNumberNumberNumberNumberNumberNumberNumberNumber數(shù)C++提供了一種數(shù)據(jù)結(jié)構(gòu),數(shù)組,它了一個固定大小的相同類型的有序集合的元素。一個數(shù)組通常被用來存不是單獨的變量,例如數(shù)字0,數(shù)字1,...,和數(shù)字99,你可以一個數(shù)組變量,例如numbers,并且使用number[0],number[1]和...,number[99]來表示單個變量。數(shù)組中的特定元素是通過索引的。要在C++中一個數(shù)組,程序員需要指定元素的類型和一個數(shù)組需要的元素的數(shù)目,如下所示typetypearrayName[arraySize這就是所謂的一維數(shù)組。其中arraySize一個大于零的整數(shù)常量type有效的C++據(jù)類型。例如,若要聲稱一個double類型的包含10個元素的balance數(shù)組,需要使用如下語句。doubledouble你可以一個接著一個或者是使用一個單獨的語句來初始化一個C++數(shù)組,如下所示doublebalance[5]doublebalance[5]={1000.0,2.0,3.4,17.0,大括號{}之間的值的大小不能比為數(shù)組時的方括號[]中的數(shù)目大。以下是一個指定數(shù)組單個元素doublebalance[]doublebalance[]={1000.0,2.0,3.4,17.0,balance[4]=balance[4]=上面的語句將數(shù)組中的第五個元素定義為50.0,第四個數(shù)組索引即第五個元素,即最后一個元素,因為所有的數(shù)組都使用0作為它們第一個元素的索引,稱為基索引,下面是 doubledoublesalary=上面的語句將第10元素從數(shù)組中取出來,并將該值賦salary量。以下是一個例子,即使用所有上述提#include<iostream>using#include<iostream>usingnamespace#include<iomanip>usingstd::setw;intmain{intn[10];//nisanarrayof10//initializeelementsofarraynto0for(inti=0;i<10;i++){n[i]=i+100;// ementatlocationitoi+}cout<<"Element"<<setw(13)<<"Value"<<//outputeacharrayelement'svaluefor(intj=0;j<10;j++){cout<<setw(7)<<j<<setw(13)<<n[j]<<}return}這個程序使用setw()函數(shù)來格式化輸出。當上述代碼編譯執(zhí)行時,它將生成以下結(jié)01123456789C++數(shù)組對C++非常重要,而且應(yīng)該需要大量的詳細信息。這里有以下幾個C++程序員應(yīng)該清概 描C++支持數(shù)組。數(shù)組最簡單的形式是二維數(shù)組指向數(shù)組的指C++允許函數(shù)返回一個數(shù)字符C++提供了以下兩種類型的字C樣式字用標準C++介紹的CC串源于CC仍然被支持。這個串實際是一個字符的一維數(shù)組,這個數(shù)組以一個空字符‘\0’結(jié)束。因此以null結(jié)尾的字符串包含由字符組成的字符串,此字符串后跟著一個null。接下來和初始化創(chuàng)建一個字符串,這個字符串組成一個單詞"o"。為了包含數(shù)組末尾的空字符,包含該字符串的字符數(shù)組的大小應(yīng)該比單詞"o"中的字符的數(shù)目多一個。charchargreeting[6]={'H','e','l','l','o',charchargreeting[]= 以下是在C/C++中定義上面的字符串的實際上,你不需要在字符串常量的末尾放置C++在初始化數(shù)組時自動在串的末尾 #include<iostream>using#include<iostream>usingnamespaceintintmain{chargreeting[6]={'H','e','l','l','o',cout<<"Greetingmessage:";cout<<greeting<<endl;return}GreetingGreeting C++支持廣泛的函數(shù)來操作以空字SN函數(shù)和功能1strcpy(s1,s2);將字符串s2到字符串s1中2strcat(s1,s2);將字符串s2串聯(lián)到字符串s1的結(jié)3strlen(s1);返回字符串s1的長度4strcmp(s1,s2);如果s1和s2相同,返回0;如果s1≥s2,返回大于0的數(shù);如果5strchr(s1,ch);返回在字符串s1中指向第一次出現(xiàn)字符ch的指6strstr(s1,s2);返回在字符串s1中指向第一次出現(xiàn)字符串s2的指針#include<cstring>usingnamespaceintmain{charstr1[10]="o";charstr2[10]="World";charstr3[10];intlen//copystr1intostr3strcpy(str3,str1);cout<<"strcpy(str3,str1):"<<str3<<//concatenatesstr1andstr2strcat(str1,str2);cout<<"strcat(str1,str2):"<<str1<<////totallenghthofstr1afterconcatenationlen=strlen(str1);cout<<"strlen(str1):"<<len<<return}strcpy(str3,str1): strcpy(str3,str1): strcat(str1,str2): strlen(str1):10C++標準的C++庫中提供了一個string類,它支持上面提到的所有的操作,另外它還有的功能。會研C++標準庫中的這個類,但現(xiàn)在先檢查以下示例#include<string>usingnamespaceintmain{stringstr1="o";stringstr2="World";stringstr3;intlen//copystr1intostr3str3=str1;cout<<"str3:"<<str3<<//concatenatesstr1andstr2str3=str1+str2;cout<<"str1+str2:"<<str3<<//totallenghthofstr3afterconcatenationlen=str3.size();coutcout<<"str3.size():"<<len<<return}str3str3ostr1+str2 str3.size():指C++起來非常容易和有趣。一些C++務(wù)用指針執(zhí)行非常容易,諸如動態(tài)分C的和運算符(&)進行。下面打印定義的變量的地址:#include#includeusingnamespacestd;intmain(){intvar1;cout<<"Addressofvar1variable:";cout<<&var1<<endl;cout<<"Addressofvar2variable:";cout<<&var2<<endl;return}AddressAddressofvar1variable:0xbfebd5c0Addressofvar2variable: typetype*var-在這里,type是指針的基類型它必須是一個有效的C++類型,var-name是指針量的稱。來一個針:int*ip;//pointertoanintegerdouble*dp;//pointertoadoublefloatint*ip;//pointertoanintegerdouble*dp;//pointertoadoublefloat*fp;//pointertoafloat *ch//pointertocharacterC++將一個變量的地址分配給指最后使用在指針變量中的地址來這個值這是通過使用一元運算符*完成的,返回位于通過運算符指定地址的變量的值。以下示例使用這些#include#includeusingnamespacestd;intmain(){intvar=20; //*ip;//pointervariableip= //storeaddressofvarinpointercout<<"Valueofvarvariable:";cout<<var<<endl;//printtheaddressstoredinippointervariablecout<<"Addressstoredinipvariable:";cout<<ip<<//accessthevalueattheaddressavailableincoutcout<<"Valueof*ipvariable:";cout<<*ip<<endl;return}ValueValueofvarvariable:Addressstoredinipvariable:0xbfc601acValueof*ipvariable:20C++指針有很多但是很容易的概念,它們對C++程非常重要。這里有一些C必須清楚的重要的指概 描C++C++支持空指針,它是在幾個標準庫中被定義值為零的一個常C++C++指針與指針與數(shù)組之間有著密切的關(guān)系。讓看一看C++你可以定義保存大量指針的C++指針的C++允許您有指針從函數(shù)返回指C++數(shù)返回一個指向本地變量的指針,同樣也允許返回指向靜態(tài)變量和動態(tài)分配內(nèi)存的變量是一個別名,即已經(jīng)存在的變量的另一個名稱(就是某一個變量的別名)。一旦用一個變量初始,變量名稱 名稱都可以用來指示變量C++VS指與指針非常容易,但和指針有三個主要區(qū)別空不可能存在。你必須始終能夠假定一個被連接到一個合法的塊c++中創(chuàng)建個。因此,您可以通過原始變量名或來變量的內(nèi)容。例如,假設(shè)有下面的例子:intinti=可以為i變量,如下所示int&int&r=在這些中將&理解為(reference)。因此,第一個理解為“r是一個整數(shù),初始化為i” 理解為“s是一個雙 ,初始化為d”。下面的例子使用了int和double #include<iostream>using#include<iostream>usingnamespaceintmain{//declaresimplevariablesdouble////declarereferencevariablesint&r=i;double&s=i=cout<<"Valueofi:"<<i<<cout<<"Valueofireference:"<<r<<d=cout<<"Valueofd:"<<d<<cout<<"Valueofdreference:"<<s<<return}將上面的代碼放在一起編譯、執(zhí)行,執(zhí)行結(jié)果如下:ValueValueofi:Valueofireference:5Valueofd:11.7Valueofdreference:通常用于函數(shù)參數(shù)列表和函數(shù)返回值。以下是與c++有關(guān)的兩個重要的方面,一個c++程序員應(yīng)該明內(nèi) 描c++支持作為函數(shù)參數(shù)傳遞,它比直接傳遞參數(shù)更安全可以從一個c++函數(shù)返回,就像返回任何其他數(shù)據(jù)類型日期和C++標準庫沒有提供一個合適的日期類型。C++從C中繼承了針對日期和時間的結(jié)構(gòu)和功能,為了與日期和時間相關(guān)的功能和結(jié)構(gòu),需要在C++程序中包括<ctime>頭文件。這里有四個與時間相關(guān)的類型:clock_t、time_t、size_ttm。clock_t,size_ttime_t型能夠以某種結(jié)構(gòu)類型tm以C結(jié)構(gòu)體的形式支持日期和時間,有以下structstructtminttm_sec; //secondsofminutesfrom0to61inttm_min; //minutesofhourfrom0to59inttm_hour;//hoursofdayfrom0to24inttm_mday;//dayofmonthfrom1to31inttm_mon; //monthofyearfrom0to11inttm_year;//yearsince1900inttm_wday;//dayssinceinttm_yday;//dayssinceJanuaryinttm_isdst;//hoursofdaylightsavings}以下是在C或C++中處理日期和時間時使用的一些重要的函數(shù)。所有這些函數(shù)都是標準C和C++庫的一部分,你可以使用下面給出的C++標準庫查看它們的使用細節(jié)。序號功能與目的1time_ttime(time_t這將返回當前系統(tǒng)的日歷時197011開始系統(tǒng)運行秒數(shù)的形式。如果系統(tǒng)沒有時間,返回1。2char*ctime(consttime_t3structtm*localtime(consttime_t這將返回一個指向tm結(jié)構(gòu)體的指針,tm結(jié)構(gòu)體代表當?shù)貢r間4clock_t這將返回一個與被調(diào)用程序運行時間的總和接近的值。如果時間無效,返回15char*asctime(conststructtm*timerhours:minutes:secondsyear\n\06structtm*gmtime(consttime_t它返回一個指向時間的指針,該時間是tm結(jié)構(gòu)的。時間用協(xié)調(diào)世界時(UTC)表示,在本質(zhì)上是標7time_tmktime(structtm返回日歷時間,時間以參數(shù)中的結(jié)構(gòu)形式表示8doubledifftime(time_ttime2,time_ttime1這個函數(shù)計算秒time1time2的差9size_t#include<ctime>usingnamespaceintmain({//currentdate/timebasedoncurrentsystemtime_tnow=time(0);//convertnowtostringformchar*dt=ctime(&now);cout<<"Thelocaldateandtimeis:"<<dt<<//convertnowtotmstructforUTCtm*gmtm=gmtime(&now);dt=cout<<"TheUTCdateandtimeis:"<<dt<<}TheThelocaldateandtimeis:SatJan820:07:41TheUTCdateandtimeis:SunJan903:07:41tm無論是在C還是在C++中,tm結(jié)構(gòu)體在處理日期和時間時都是非常重要的。如前所述,該結(jié)構(gòu)以一種C語言結(jié)構(gòu)體的形式支持日期和時間。大部分與時間相關(guān)的函數(shù)使用tm結(jié)構(gòu)。下面是一個例子,它使用了各種各樣日期和時間的相關(guān)函數(shù)和tm結(jié)構(gòu):在本章中使用結(jié)構(gòu)體,基于一個假設(shè):你已經(jīng)對C語言的結(jié)構(gòu)體有了基本的了解,并且知道如何使用箭頭操作符:->結(jié)構(gòu)體成員。#include<ctime>usingnamespaceintmain({//currentdate/timebasedoncurrentsystemtime_tnow=time(0);cout<<"NumberofsecsinceJanuary1,1970:"<<now<<endl;tm*ltm=localtime(&now);//printvariouscomponentsoftmstructure.cout<<"Year:"<<1900+ltm->tm_year<<endl;cout<<"Month:"<<1+ltm->tm_mon<<endl;cout<<"Day:"<<ltm->tm_mday<<endl;cout<<"Time:"<<1+ltm->tm_hour<<":";cout<<1+ltm->tm_min<<":";cout<<1+ltm->tm_sec<<}NumberNumberofsecsinceJanuary1,1970:1294548238Year:2011Month:Day:Time:22:基本輸入C++標準庫提供了一組廣泛的的輸入/輸出功能,在隨后的章節(jié)中展開。本章將C++編程所需的最基本和最常見的I/O操作。C++I/O發(fā)生在流中,流是一種字節(jié)序列。如果字節(jié)流從一個設(shè)備(如鍵盤、磁盤驅(qū)動器,或網(wǎng)絡(luò)連接等)到主內(nèi)存,這稱為輸入操作(inputoperation)。如果字節(jié)從主內(nèi)存流向一個設(shè)備(如顯示屏,,磁盤驅(qū)動器,或網(wǎng)絡(luò)連接等),這就是所謂的輸出操作(outputoperation)。I/O下邊列出對于C++程序重要的頭文件頭文件功能和描述這個頭文件定義了cin、cout、cerrclog象,它們分別對應(yīng)于標準輸入流,標準輸出流,無緩這個頭文件了用于執(zhí)行格式化I/O操作的一系列服務(wù),即所謂的參數(shù)化流操作,如setw和set預(yù)定coutostream的一個實例。cout象通常連接到標準輸出設(shè)備,一般是顯示屏。cout流運算符聯(lián)合使用,流運算符寫為<<,即兩個表示小于的符號,如以下示例所示。#include#includeusingnamespacestd;intmain(){charstr[]= ocout<<"Valueofstris:"<<str<<}ValueValueofstris oC++編譯器也決定了輸出的變量數(shù)據(jù)類型并選擇適當?shù)牧鬟\算符來顯示值。<<操作符重載了多種輸出數(shù)據(jù)運算符<<在一個語句中可能不止一次被使用,如上所示,endl寫在結(jié)束的時候用于添加一個預(yù)定義對象cin是istream實例。cin象通常用于標準輸入設(shè)備,一般是鍵盤。cin運符聯(lián)合使用,流提取符號寫為即兩個表示大于的符號,如以下示例所#include#includeusingnamespacestd;intmain(){charcout<<"Pleaseenteryourname:";cin>>name;cout<<"Yournameis:"<<name<<}Pleaseenteryourname:cplusplusYournameis:cplusplusPleaseenteryourname:cplusplusYournameis:cplusplusC++編譯器也決定輸入值的數(shù)據(jù)類型和選擇適當?shù)牧魈崛∵\算符提取值并將其在給定的變量。流提取操作符>>可以在一個中不止一次使用。請求多個數(shù)據(jù)時,可采用以下書寫形式:cincin>>name>>上述表達式等價于下面兩 cincin>>name;cin>>預(yù)定義對象cerrostream的一個實例。cerr象通常附加到標準錯誤設(shè)備,這一般也是一個顯示屏,但對象cerr是無緩存的,每當有流到cerr會導(dǎo)致其輸出立即出現(xiàn)。cerr也與流操作符一起使用,如以下示例所示#include#includeusingnamespacestd;intmain(){charstr[]="Unableto cerr<<"Errormessage:"<<str<<}ErrorErrormessage:Unableto預(yù)定義對象clog是ostream類的一個實例。clog對象通常附加到標準錯誤設(shè)備,這一般也是一個顯示屏,但對象clog是有緩沖的。這意味著每個的clog會暫存在緩沖區(qū)中,直到緩沖區(qū)滿或者緩沖區(qū)刷新才會產(chǎn)生clog也與流操作符一起使用,如以下示例所示#include#includeusingnamespacestd;intmain(){charstr[]="Unableto clog<<"Errormessage:"<<str<<}ErrorErrormessage:Unableto在這些小例子中,你可能無法看出cout,cerr,clog區(qū)別,但在編寫、執(zhí)行大項目時,差異就變得顯而易見了。所以這是很好的應(yīng)用實踐:使用cerr流顯示錯誤消息,而使用clog顯示其他日志信息。結(jié)構(gòu)C/C++體(struct)是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合,叫做結(jié)構(gòu),但結(jié)構(gòu)體(struc結(jié)構(gòu)用來表示一條記錄。假設(shè)你想在館中找一本書,您可能需要查找每本書的以下屬性Book定義一個結(jié)構(gòu)體,您必須使用結(jié)構(gòu)體。結(jié)構(gòu)體語句為您的程序定義了一個新的數(shù)據(jù)類型,擁有一個以上的成結(jié)構(gòu)體的格式是這樣的struct[structurestruct[structure{memberdefinition;member

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論