博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
24、printf跨平台,数据类型与输出类型要匹配
阅读量:6177 次
发布时间:2019-06-21

本文共 764 字,大约阅读时间需要 2 分钟。

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

参考:

1

2

3】 类型与字节数

4printf实现的探究

转载地址:http://byzda.baihongyu.com/

你可能感兴趣的文章
中国云计算应用进入集中爆发期
查看>>
算法精解---计数排序
查看>>
DockOne微信分享(一二八):容器如何监控?
查看>>
谈谈分布式事务(Distributed Transaction)[共5篇]
查看>>
如何确保快递“最后一公里” ,亚马逊打算送到你的汽车后备箱
查看>>
Gartner:财务应用迁移到云 速度超出预期
查看>>
阿里云向物流业渗透 货运司机受益
查看>>
灾难恢复的人为因素:经理们应该做的10件事情
查看>>
中国教育行业可能到了最不平凡的10年:要么创新,要么死亡
查看>>
学习Docker的User Namespace
查看>>
Symantec Backup Exec 2012 Agent for Linux 卸载
查看>>
用EJB进行事务管理
查看>>
Linux Shell脚本系列之一
查看>>
数据可视化,个人经验总结(Echarts相关)
查看>>
Mysql MAC installation
查看>>
一款基于Vue和Go的桌面端管理star项目应用
查看>>
使用shell创建一个简单的菜单bash select用法
查看>>
Nuxt之默认模版和默认布局
查看>>
Vue模板、JS、CSS分离实现
查看>>
Hexo -- 快速、简洁且高效的博客框架 入门
查看>>