亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

假設有cin>>hex>>a>>oct>>b>>dec>>c;若輸入12,12,12,并執行,求!

假設有cin>>hex>>a>>oct>>b>>dec>>c;若輸入12,12,12,并執行,求!

有只小跳蛙 2021-12-09 11:07:59
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)連續用>>調用,能獲得連續輸入。
這次調用就是接收輸入了。同樣的道理,后面的也是這樣。

查看完整回答
反對 回復 2021-12-13
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

cin和cout的參數中可以有操作,例如hex、fixed、flush、endl、boolalpha。其中hex、fixed、boolalpha之類的會設置流的標志,使之后的操作使用指定的格式進行。而endl、flush這類則會對流進行操作,比如說輸出換行和刷新流。
這些操作都是以流(ios_base)的引用為參數的函數。你只要將相應的函數通過輸入/輸出流,這個函數就會對流進行操作。
而hex操作會執行stream.setf(ios::hex, ios::basefield);
就是設置流使其之后在進行讀寫的時候以十六進制進行。

查看完整回答
反對 回復 2021-12-13
  • 2 回答
  • 0 關注
  • 403 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號