项目中用到long、long long等字段,遇到一些问题。先说得到的一些结论:

大小端:Windows、Linux是小端,AIX是大端。

sizeof(指针类型)=程序位数/8。

long、unsigned long不是跨平台的,一定要慎用。

自己写了程序测试各平台下(Windows、Linux、AIX),C++各基本类型的最大值、最小值,以及占用字节数。

#include

#include

using namespace std;

void checkEndian();

int main()

{

checkEndian();

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

return 0;

}

void checkEndian()

{

short int a=0x1122;

char* b = (char*)&a;

if(*b==0x11)

{

cout<

}

else

{

cout<

}

}

编译环境:

Windows(Win10):编译32位、64位

Linux(Redhat5.5):编译32位、64位

AIX(AIX5.3):编译32位、64位

测试结果:

从以上测试结果,可以总结几点:

大小端:Windows、Linux是小端,AIX是大端。

sizeof(指针类型)=程序位数/8。32位程序,指针类型占4个字节;64位程序,指针类型占8个字节。顺便提一句,8字节的指针,可以指向更多的地址,因而64位系统可以支持更大的内存。

最最重要的是:long、unsigned long不是跨平台的,一定要慎用。大多数时候(除Linux64、AIX64),long和int是一样的,unsigned long和unsigned int是一样的,用起来没有差别。所以,int不够用的时候,别用long,用long long。

字符大小端aix linux,long, unsigned long不是跨平台的(慎用)相关推荐

  1. 字符大小端aix linux,Go交叉编译的那些事

    最近两个月,一直在搞项目的国产化移植,把golang开发好的程序,运行在国产化平台上,操作系统基本都是基于Linux,但是CPU架构除了x86,还有ARM和MIPS,我们平时的Golang都是运行于x ...

  2. 大小端 Big-Endian 与 Little-Endian

    应该说没做底层开发(硬件或驱动)的人很可能不会彻底理解大小端的概念,大小端不是简单的一句"大端在前"还是"小端在前"能够概括的问题.在cpu, 内存, 操作系统 ...

  3. STM32的大小端模式——什么是大小端模式?

    目录 1. 什么是大小端模式 2. 为什么会有大小端模式之分 3. 什么情况需要考虑大小端模式 4. 常见的设备的大小端模式 5. 测试大小端模式例程 6. 大小端转化例程 1. 什么是大小端模式 大 ...

  4. linux大端小端命令,linux的大小端、网络字节序问题

    linux的大小端.网络字节序问题 总结:1.80X86使用小端法,网络字节序使用大端法. 2.二进制的网络编程中,传送数据,最好以unsigned char, unsigned short, uns ...

  5. Linux系统的大小端模式

    大端模式 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数 ...

  6. Linux内核判断大小端,linux kernel 如何处理大小端

    暂时在用MPC8309,不太清楚大小端内核是什么时候给转的. 今天看了关于readl和writel具体实现的文章 今天就主要来分析下readl/writel如何实现高效的数据swap和寄存器读写.我们 ...

  7. linux结构体大小端,【转】位结构体+大小端模式

    位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构比按位运算符更加方便 位结构定义的一般形式为: struct 位结构名{ 数据类型 [变量名]: 整型常数; 数据类型 [变量名] ...

  8. Linux账户标识R=400是什么意思_带你阅读linux内核源码:通俗讲解编译器、交叉编译器和大小端...

    欢迎关注"技术简说",持续分享linux内核和驱动开发干货. 本文内容包括: 编译器和交叉编译器的介绍 交叉编译器的命名规则 如何交叉编译C代码 大端.小端的通俗讲解 如何判断你的 ...

  9. Linux大小端转换实现

    实现 #include <byteswap.h> #include <stdint.h>/*** @brief 8字节类型的字节序转化*/ template<class ...

最新文章

  1. 干货!用 Python 快速构建神经网络
  2. Android10.0 Binder通信原理(十一)-Binder总结
  3. CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)
  4. python代码画简单图-python绘制简单彩虹图
  5. python request-Python之request模块-基础用法
  6. Theano深度学习入门
  7. python爬虫---requests库的用法
  8. 循环类里面的每一个属性
  9. SAP UI5 get route - local version VS central version
  10. 计算机培训研修日志,2021年计算机培训研修日志
  11. html中的数字选框,带有复选框和数字类型的HTML表单提交与PHP?
  12. java web-inf_对JavaWeb项目中WEB-INF目录的理解
  13. Linux之文件基础操作命令
  14. C语言中register类型变量
  15. 稳定性思考-强弱依赖
  16. dskinlite(uieasy mfc界面库)使用记录4:绘制动态元素(listbox)
  17. 第3次 实验 原码一位乘法实验
  18. Ruby File.open 方法打开文件和File.new 方法打开文件的差别
  19. jQuery boxy
  20. python采集原神高清pv图和语音

热门文章

  1. python高阶函数filter_Python进阶系列连载(13)——Python内置高阶函数filter(上)...
  2. js判断移动端,pc端,安卓,苹果浏览器的方法
  3. 四阶龙格库塔c语言,四阶龙格库塔算法的C语言实现
  4. 接口返回的类型是html页面_1.10 PhalApi 2.x 接口文档
  5. linkedblockingqueue 后 take 不消化_消化不良的成因及护理
  6. 服务器系统报错kernel-power,第十二讲、Linux服务器操作系统1.ppt
  7. linux 拿shell,linux下备份拿shell[渗透必备]
  8. java 监控 native 内存_JVM NativeMemoryTracking 分析堆外内存泄露
  9. CSDN转载别人文章的操作
  10. java在线找错_平台配置及测试错误提示及解决方案