为了账号安全,请及时绑定邮箱和手机立即绑定

假设有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 关注
  • 312 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信