i/o操作符號(《和》)返回數值
最近博問裡有幾個問題都牽涉到這一點了,簡單做筆記說明一下。
首先cin是乙個物件,不會"返回"值,>>和《才是方法,具有返回值。>>和《操作符的運算順序是由左向右邊,所以下面的兩種語句描述其實是一致的:
cin>>a>>b>>c;
(((cin>>a)>>b)>>c);操作cin>>a的意義: 呼叫
istream
的operator>>方法讀取資料並存入變數a中。那麼》或者《的返回值是什麼呢?這裡說的返回值並不是指讀入變數中的值,而是返回賦給左值的資料,在這裡, >>返回的是cin,追蹤原始碼可以發現這一點:
istream& operator>> (istream& is, char& ch );
istream& operator>> (istream& is, signed char& ch );
istream& operator>> (istream& is, unsigned char& ch );
istream& operator>> (istream& is, char* str );
istream& operator>> (istream& is, signed char* str );
istream& operator>> (istream& is, unsigned char* str )當然也可以測試如下:
if ((cin >> a) == cin) else為什麼可以使用cin作為真值判定條件
cin可以被如下使用:
if(cin){}
if(cin>>a>>b){}
while(cin>>a){}上面說到了》的返回值是cin,所裡上面的真值判定等同於:
if(cin){}
if(cin){}
while(cin){}如果cin的狀態ok則為真,如果cin遇到eof或者發生錯誤則返回false, 為什麼可以使用cin作為真值判定條件?
首先看cin是如何定義的:
extern istream cin;這樣的乙個值怎麼可以作為if的真值判定條件呢?這是因為在if(cin)或者while(cin)的時候,其實是呼叫了乙個istream的方法,寫一行簡單的**反彙編看一下:
int main()
return 0;
}對應的彙編**如下:
其實所有派生自ios的類都可以被強制轉換為乙個指標,如果設定了錯誤標誌位則指標為null,否則非null,測試如下**:
#include
#include
usingnamespace std;
int main ()
vim操作符號
vi vim 是上linux非常常用的編輯器,很多linux發行版都預設安裝了vi vim vi vim 命令繁多但是如果使用靈活之後將會大大提高效率。vi是 visual inte ce 的縮寫,vim是vi improved 增強版的vi 在一般的系統管理維護中vi就夠用,如果想使用 加亮的話可...
Python數值運算操作符
操作符及使用 描述x y 加,x與y之和 x y減,x與 y之差 x y乘,x與y之積 x y除,x與y之商 10 3結果是3.3333333333333335 x y 整數除,x與y之整數商 10 3結果是3 xx本身 xx的負值 x y餘數,模運算 10 3結果是1 x y 冪運算,x的y次冪,...
python 格式化符號操作符
字串格式化符號含義 c c c 96,97,98 ab c c c 96,97,98,ab c c c 96,97,98 a b c c c 99,97,98 c a b d d d 4,5,4 5 4 5 9 x 10 a x 100 64 f 27.666 27.666000 e 27.666 ...