永发信息网

为什么在使用scanf()函数读取十六进制数时,不要输入ox前缀?有什么影响吗?

答案:5  悬赏:50  手机版
解决时间 2021-03-23 15:07
  • 提问者网友:你给我的爱
  • 2021-03-22 17:51
为什么在使用scanf()函数读取十六进制数时,不要输入ox前缀?有什么影响吗?
最佳答案
  • 五星知识达人网友:煞尾
  • 2021-03-22 19:16
我认为前缀只是给人看的,方便阅读者识别数据
而机器中存储的数据,不管是什么进制数据,其本质存储都是该数的二进制形式(补码)
而scanf()函数读取数据时,是将输入的信息直接存储到相应的变量中,而不会进行判断哪儿是前缀哪儿是数据。因此,输入时不能再有前缀了。
只要格式为%x 数据就按16进制解释保存。
%d按10进制解释保存。
%o按8进制解释保存。
全部回答
  • 1楼网友:持酒劝斜阳
  • 2021-03-22 22:24
没有什么影响,就和输入一个整数一样,只是你用16进制的来输(可以用a到f的字母)
  • 2楼网友:枭雄戏美人
  • 2021-03-22 22:06
scanf("%x",&x);输入十六进制数a83e即可,输入0xa83e则错误。
  • 3楼网友:掌灯师
  • 2021-03-22 21:30
你只注意到不用输入0x前缀,这个是有前提的!其调用格式为: scanf("<格式化字符串>",<地址表>);

那是因为有格式化字符串的限制
scanf("%x",&x);输入十六进制数不用前缀可以输入 输入前缀0x反而是错的

scanf("%d", &b);这个是输入十进制的,输入十六进制即使不带0x也是错的(但必须是A~F开头的十六进制),不然会认为是十进制的数字而可以输入
  • 4楼网友:英雄的欲望
  • 2021-03-22 20:04
0x之类的前缀不只是给人看的,另一个作用是告诉编译器这是什么进制的数,因为十进制的123和十六进制的123(用十进制表示就是291)看起来是一模一样的,但是由于scanf()函数已经知道了输入的是十六进制数,就不用再告诉它一遍了……
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯