標准庫定義了四個IO對象,分別是標准輸入的cin、標准輸出的cout、錯誤輸出cerr,一般信息輸出clog。
c++每一個表達式都會產生一個結果,對於操作符是輸出輸入操作符,接受右操作數返回左操作數的值。比如cin>>i>>j;
如果理解沒錯的話,注釋在進行預編譯的時候就被正則表達式相關定義去除了,那么如果存在塊注釋/**/狀態機尋找的標准是/*直到下一個*/停止,所以注釋是不可以嵌套的,比如/* kk/**/dd*/那么dd會被認為是代碼段。
習題時 std::cout<</* "*/" */;雖然我們直到輸出值被注釋,所以導致了右操作數是空的,這是會報錯的。
基本類型相關
- 整數型的賦值如果溢出則一般是進行取余操作,比如說對於unsigned char賦值-1結果是255,255是-1對256的求模
- 字面值常量(literal constant),比如說9等這樣的值,按照編譯原理的角度來說就是我們正則表達式中的最小表達式的右半部分,如果說我們定義一種變量是num -> 0|1|2|3...9|10 其實這里的0到10就是字面值常量,它們代表的符號已經不能再分割成子成分進行編譯成語法樹。
- 所以字面值是因為只能用它們的值來稱呼它們,所以常量是因為它的值不能被修改,每一個字面值都有對應的類型。如0是int,3.1415926是double等等。
- 整型字面值規則: 十進制24;八進制(0零開頭)024;十六進制0x14,如果想表示長整形long則在數值后加上L,無符號則加上U,如128U,1024UL等等
- 浮點型字面值規則: 可以用十進制或者科學計數法,E表示指數,比如3.14159F=3.14159E0F,.001F=1E-3F. 3.14默認是double,3.14f是float,3.14L是long double,1024f是錯誤的整數1024后不能接f,3.14UL也是錯誤的L沒有U
- 布爾字面值和字符字面值: true,false,'a',如果是wchar_t則是L'a'
- 轉義字符序列: /n /t 等等
- 字符串字面量: 用雙引號括起來的零個或者多個字符表示,為了兼容C,所有的字符串字面量都由編譯器自動在末尾添加一個空字符。‘A’ //single quote:character literal "A" //double quote:character string literal。
- 字符串字面量連接,類似於java的形式但是少了+號,如cout<<"a""b""c";結果就是"abc"
- 對象: 就是內存中具有類型的區域。
- 定義對象
- 初始化有兩種方式: 1.int val(1024); 2.int val=1024; 前者叫做直接初始化,后者叫做復制初始化
- 變量初始化的時候值匹配,比如 int month=09,這是以八進制的形式賦值,此時9已經是超過了。應該是 int month=011
- 變量初始化規則,如果是內置類型變量的初始化,函數體外的都是初始化為0或者是空字符串,如果是函數體內則不初始化。如果是類類型變量的初始化,無論在哪沒有指定初始化式的時候默認都是使用默認構造函數。
- 定義對象
- 聲明和定義,變量必須且僅能定義一次。extern進行聲明變量,它不是定義,也不分配存儲空間,只是說明變量在程序的其他地方。程序中的變量能聲明多次,但只能定義一次。extern double pi=3.14; 定義聲明 extern double pi; 聲明 double pi;重復定義。注意一點是extern可以聲明且定義,但只能是在函數體之外,即變量是全局變量。
- const限定符,該對象必須初始化,默認是文件的局部變量,如果想在其他文件使用,如下 //file1.cpp extern const int size=19; //file2.cpp extern const int size; int a=size; ..
- 引用reference.它實質上是變量的一個別名,和變量指向同一個地址內容。引用一定要初始化,只要該引用存在,它就保持綁定到初始化時指定的對象,不可將引用綁定到另外的對象上。const引用,便是指指向const的變量的引用。實際上,非const引用只能綁定與該引用同類型的變量。const引用是可以綁定到不同但相關的類型對象或者是綁定到右值。
-
1 int ival=1.01; //合法,隱式轉換成1 2 int &rval1=1.01; //非法,非const引用不能是右值 3 int &rval2=ival; //合法 4 const int &rval3=1; //合法 5 6 rval2=3.14.159; //合法 7 rval2=rval3; //合法 8 ival=rval3; //合法 9 rval3=ival; //非法,const值不能被修改
- typedef名字,用來定義類型的同義詞, typedef double wages;
- 枚舉, enum open_modes {input ,output,append} 分別代表了 0 ,1, 2 這三個值。 當然也可以自定義常量, enum Points { pd=2,pw,px=3,pl}; ,這個例子中,沒有指定值的會默認增加,所以pw=3,pl=4;
類類型及其定義
c++程序經常是由多個文件組成,一個變量一般有聲明,定義,初始化這些階段。聲明用於向程序表明變量的類型和名字而已,而定義除了聲明還有分配給它相應的存儲空間。初始化式必須要有存儲空間來進行初始化。
在c++語言中哦,變量必須且僅能定義一次,而且使用變量之前必須定義或者聲明變量。
關於具體頭文件的限制看這個博文。