cout << 输出格式突然变成了16进制

2023-11-12

1. 背景:

在工程中,我通过cout打印一个被频繁调用的函数里面某个参数的值,在前面若干次调用中,cout << 工作正常,是打印的10进制,突然,不清楚什么原因,就开始打印16进制的值,而且是不加0x的16进制,导致我一直以为是10进制,但是加条件断点加不上去,通过if条件也进不去对应的分支,直到我使用printf打印参数的值,才发现打印的值是16进制显示的。。

2. cout << 原理

cout是一个对象(object),类型是ostream,ostream重载了运算符 <<。

3. cout << 如何输出x的16进制

方法1: cout << std::hex << std::showbase << x;
方法2: cout.flags(std::ios::hex | std::ios::showbase);

并且,上面的设置是全局设置,只要你在某个地方设置了上面的输出格式,程序成功执行了该语句之后,程序接下来的执行cout时都会按照16进制输出;

为什么是全局设置呢?因为cout是个全局对象,通过方法1和方法2其实是修改了cout内部的属性。

依据上面的理解,我检查了下我的代码,发现确实是在某个时候,程序在进行cout输出的通过方法1设置了输出格式,并且只是设置了std::hex,而没有设置std::showbase,所以是不带0x的16进制输出;正式由于不带0x前缀导致我很疑惑,所以强烈建议 在16进制输出的时候,加上std::showbase; 减少疑惑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cout << 输出格式突然变成了16进制 的相关文章

随机推荐

  • C# Selenium chromedriver 隐藏Devtool控制台窗口

    爬取网页信息时 使用了C Selenium WebDriver dll chromedriver Chrome 除了chromedriver控制台窗口 可以通过CDS HideCommandPromptWindow true隐藏 还有出现一
  • Health Kit基于数据提供专业方案,改善用户睡眠质量

    什么是CBT I 中国社科院等机构今年发布的 中国睡眠研究报告2023 内容显示 2022年 受访者的每晚平均睡眠时长为7 40小时 近半数受访者的每晚平均睡眠时长不足8小时 47 55 16 79 的受访者的每晚平均睡眠时长不足7小时 这
  • C++异常处理机制(超级详细)

    目录 0 异常处理机制简介 1 传统错误处理机制 通过函数返回值 2 异常处理机制语法 3 异常接口声明 4 异常类型和声明周期 4 1throw基本类型异常 int float char 4 2throw字符串类型异常 4 3throw类
  • 数据可视化(学会用matplotlib绘图)

    1 绘制简单的折线图 import matplotlib pyplot as plt squres 1 4 9 16 25 plt plot squres 把列表传给plot 这个函数尝试根据这些数字绘制出有意义的图形 plt show 打
  • 【取模软件PCtoLCD2002使用教程】

    1 打开取模软件PCtoLCD 2 左上角模式选择为字符模式 3 点击选项 4 设置如下 然后点击确定 5 以16x16汉字取模为例 字宽字高都改为16 然后在输入栏输入汉字 点击生成字模生成的字模如下 然后将字模复制到例程lcdfont
  • 距离向量算法_RIP协议及距离向量算法(上)【44】

    1 RIP协议 RIP 全称Routing Information Protocol 即路由信息协议 RIP是一种分布式的基于距离向量的路由选择协议 是因特网的协议标准 最大优点的简单 RIP协议要求网络中每一个路由器都维护从它自己到其它每
  • Centos 安装mysql8(YUM方式)

    1 执行安装命令 root localhost wget https dev mysql com get mysql80 community release el8 4 noarch rpm root localhost yum modul
  • JAVA 定义静态map并赋值

    private static final Map
  • C语言入门经典三,c语言入门经典第4版和第3版有什么区别

    问 微软的C语言和其他C语言有什么区别吗 答 不知道楼主说的是所谓 微软的c 是指什么概念 个人意见 仅供参考 1 如果是指微软推出的c语言的编译器ms c的话 其实就是c语言各个编译器之间的区别 如果你想深入了解 最好是学习下c标准的制定
  • 【ICS大作业】

    零 摘要 本文对给定的hello程序的生命周期进行了系统性分析 程序经预处理生成hello i 编译生成hello s 汇编生成hello o 最后链接成可执行目标文件hello Shell收到 hello的指令 调用fork函数创建进程
  • 再临SpringBoot——WebFlux处理流程

    文章目录 WebFlux初次尝试 处理过程源码分析 SpringMvc通常是Servlet应用 因此 可能被当前线程阻塞 以远程调用为例 由于阻塞的缘故 导致Servlet容器使用较大的线程池处理请求 而Spring WebFlux通常是非
  • 第一篇——开始

    第一篇 开始 个人简介 学习经历 学习过程 后记 个人简介 个人简介 以山河作礼 学习经历 作为一名本科大一的软件工程专业学生 我已经在CSDN学习了近一年的时间 同时也深入学习了C语言半年 在我的CSDN博客上 我将记录下我在学习过程中的
  • Vue3.0监听props方法

    学习vue3 0记录下props监听 第一种直接监听这个props export default defineComponent props isOpen Boolean emits close modal null setup props
  • 算术表达式的前缀式、中缀式、后缀式相互转换

    中缀表达式 中缀记法 中缀表达式是一种通用的算术或逻辑公式表示方法 操作符以中缀形式处于操作数的中间 中缀表达式是人们常用的算术表示方法 虽然人的大脑很容易理解与分析中缀表达式 但对计算机来说中缀表达式却是很复杂的 因此计算表达式的值时 通
  • 02Nginx源码分析之总结内存开辟的相关函数(ngx_alloc.c,ngx_palloc.c)

    02Nginx源码分析之总结内存开辟的相关函数 ngx alloc c ngx palloc c 前言 写这一篇的目的是为了方便接下来的阅读 否则每次都要对应查找相应的函数 非常麻烦 并且注意 下面所说的内存对齐 实际上是通过倍数来对齐的
  • Mac下使用Xcode的freopen读取输入输出

    很多使用Mac的小伙伴都知道 类似于win或者linux系统下的直接freopen是不行的 或者说强制读入也是不可的 于是 就是去想办法去读入它了 那么怎么读文件和写文件呢 创建 txt 文件 找到文本编辑 点击新建文稿 但是发现 怎么是这
  • 我要自学网视频教程ajax,这么逆天的自学网站,还是第一次见,难怪考不上清华北大...

    原标题 这么逆天的自学网站 还是第一次见 难怪考不上清华北大 有很多朋友 工作了N年之后 工资一直不涨 其实就是没有找到正确的方法 这个时候呢 我们就需要用到一些非常好用的自学网站 去帮助自己在所在的领域进行充电啦 首选的当然就是下面几个啦
  • Servlet 的应用程序设计

    目录 1 基于 Servlet Controller 的应用程序设计 2 基于 Filter Dispatcher 的应用程序设计 3 使用表单验证器 4 添加数据库访问 5 依赖注入 在该模型中 用一个 Servlet 或者过滤器充当控制
  • Flex中字符串String按照格式转化为日期Date的方法

    在Flex中 要通过传入时间的字符串和格式字符串的方式来转换出Date Flex本身没有完善的方法 不知道Adobe在想什么 这么简单实用的功能都没有 回想起来 还是java神马的好 在网上找了好久都没有完善的解决方案 最后偶然发现Date
  • cout << 输出格式突然变成了16进制

    1 背景 在工程中 我通过cout打印一个被频繁调用的函数里面某个参数的值 在前面若干次调用中 cout lt lt 工作正常 是打印的10进制 突然 不清楚什么原因 就开始打印16进制的值 而且是不加0x的16进制 导致我一直以为是10进