24、printf跨平台,数据类型与输出类型要匹配

简介: 1、使用printf应当说是类型不安全的。所以才引入了C++的流输入输出。 比如: #include "stdint.h" #include "iostream" using namespace std; int main() {     in...

1、使用printf应当说是类型不安全的。所以才引入了C++的流输入输出。

比如:

#include "stdint.h"

#include "iostream"

using namespace std;

int main()

{

    int64_t a = 1;

    int b = 2;

    uint32_t uin = 1;

    printf("%p %p\n", &a, &b);

    printf("%llu\n", uin);

    cout << a << " "<< b << endl;

    printf("%d %d\n", a, b);

    return 0;

}

输出是:

0xbfd831e0 0xbfd831dc

13823853877176303617  //error

1 2

1 0  //error

可以看到,uint32_t类型,我们用lld时,出现了错误,因为printf是根据类型,从起始地址偏移类型个字节进行读取数据。

使用C++中的流便不会出现这个问题。在跨平台中,应当引起注意。

2、类型与字节数【3

%ld:long int, 32位平台4 bytes

%lld: long long int, 32位平台8 bytes

%lf:double

**************

typedef signed char       int8_t

typedef short int         int16_t;

typedef int             int32_t;

# if __WORDSIZE == 64

typedef long int         int64_t;

# else

__extension__

typedef long long int     int64_t;

#endif

参考:

1http://www.vimer.cn/2011/08/printf-%E5%B0%8F%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%A4%A7%E9%97%AE%E9%A2%98.html

2http://www.cppblog.com/Solstice/archive/2010/04/06/111788.aspx

3】 类型与字节数

http://blog.sina.com.cn/s/blog_4b9eab320100sdex.html

4printf实现的探究

http://www.cnblogs.com/hnrainll/archive/2011/08/05/2128496.html

目录
相关文章
|
前端开发 Java 测试技术
java通用分页(后端)
1.通用分页是什么? Java通用分页是指在Java编程语言中实现的一种通用分页功能。它通常用于在Java Web应用中展示大量数据或查询结果,并将其分页显示给用户。
500 1
|
缓存 测试技术 编译器
[Eigen中文文档] 稠密矩阵分解函数对比
本文介绍了 Eigen 为各种方阵和过约束问题提供的稠密矩阵分解的速度比较。
473 0
|
存储 网络协议 API
大端与小端概念、多字节之间与单字节多部分的大小端转换详解
大端与小端概念、多字节之间与单字节多部分的大小端转换详解
1227 1
|
4月前
|
人工智能 安全 API
近期 AI 领域的新发布所带来的启示
2024 年以来,AI 基础设施的快速发展过程中,PaaS 层的 AI 网关是变化最明显的基建之一。从传统网关的静态规则和简单路由开始,网关的作用被不断拉伸。用户通过使用网关来实现多模型的流量调度、智能路由、Agent 和 MCP 服务管理、AI 治理等,试图让系统更灵活、更可控、更可用。国庆期间 AI 界发布/升级了一些产品,我们在此做一个简报,从中窥探下对 AI 网关演进新方向的启示。
445 49
|
8月前
|
SQL 存储 消息中间件
Trino权威指南
Trino(原Presto SQL)是一款开源分布式SQL查询引擎,专为大数据联邦查询设计。它支持秒级查询PB级数据,可无缝对接Hive、MySQL、Kafka等20+异构数据源。其核心特性包括高速查询、弹性扩展和低成本使用,适合交互式分析与BI场景。Trino采用无共享架构,通过列式内存格式和动态代码生成优化性能,并提供丰富的连接器实现计算存储分离,最大化下推优化以提升效率。
|
7月前
|
人工智能 数据可视化 安全
权限分级看板管理:构建企业数据安全与高效协同的解决方案
权限分级看板管理通过科学划分用户角色与数据访问权限,实现企业数据的安全控制与高效可视化。它确保不同层级员工获取所需信息,防止敏感数据泄露,提升协作效率和系统安全性。结合RBAC等模型及审计机制,助力企业实现精细化数据治理。
234 0
|
API 开发者 内存技术
鸿蒙next版开发:相机开发-会话管理(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了完整的API来管理相机会话,包括创建相机输入流、预览输出流、拍照输出流,配置和管理会话。本文详细介绍了相机会话管理的基础步骤和代码示例,涵盖会话创建、闪光灯和焦距配置及错误处理等内容,帮助开发者更好地利用ArkTS开发相机应用。
389 4
多线程线程安全问题之什么是锁的粒度,减少锁的粒度有哪些好处
多线程线程安全问题之什么是锁的粒度,减少锁的粒度有哪些好处
|
存储 JavaScript 前端开发
无需构建工具,快速上手Vue2 + ElementUI
在不使用构建工具的情况下,快速搭建Vue2+ElementUI应用:直接在HTML中引入Vue和Element UI的CDN,创建Vue实例,绑定数据和组件。示例展示了如何使用Element UI的按钮和复选框组创建权限设置界面。通过Vue的响应式系统和组件化实现数据绑定和界面更新。完整代码包括设置权限按钮和三个复选框组,预设了城市权限选项。
700 0
无需构建工具,快速上手Vue2 + ElementUI
|
C++
Sublime Text 3 解决中文乱码问题
【5月更文挑战第1天】本篇介绍 Sublime Text 3 解决中文乱码问题,不仅仅适用于 C/C++ 代码,也适用于其他任何 Sublime Text 3 集成的开发环境。
2652 5
Sublime Text 3 解决中文乱码问题

热门文章

最新文章