C++設有語句cin>>hex>>a>>oct>>b>>dec>>c;若輸入12,12,12cin執行后,為什么abc的值分別為18,10,12?我知道12,12,12,轉變成10進制是18,10,12!!cin>>hex>>a這條語句的意思是什么?
2 回答

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
hex 是16進制,oct是8進制,dec是10進制,你輸入3個都是12.
16進制12轉成10進制是18,8進制12轉成10進制是10,10進制12轉成10進制是12.
其實cin是一個對象,而>>是重載的操作符,你可以把>>理解為函數即cin.>>(hex),把hex作為參數。這樣cin這個對象就設置里面的成員變量的值,讓它接收輸入時能按16進制輸入,即把輸入的12當成16進制的12.執行完后會返回cin的引用,知道引用吧,從反匯編看它是返回一個指針值,
就是指向cin自己,這樣當再次用>>時又能調用cin.>>(a)連續用>>調用,能獲得連續輸入。
這次調用就是接收輸入了。同樣的道理,后面的也是這樣。

當年話下
TA貢獻1890條經驗 獲得超9個贊
cin和cout的參數中可以有操作,例如hex、fixed、flush、endl、boolalpha。其中hex、fixed、boolalpha之類的會設置流的標志,使之后的操作使用指定的格式進行。而endl、flush這類則會對流進行操作,比如說輸出換行和刷新流。
這些操作都是以流(ios_base)的引用為參數的函數。你只要將相應的函數通過輸入/輸出流,這個函數就會對流進行操作。
而hex操作會執行stream.setf(ios::hex, ios::basefield);
就是設置流使其之后在進行讀寫的時候以十六進制進行。
- 2 回答
- 0 關注
- 403 瀏覽
添加回答
舉報
0/150
提交
取消