64位linux系统下编译int32_t

在64位Linux系统下编译执行一下程序输出结果为

40 8

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

void print_size(int32_t array[10]){
printf("%ld\n",sizeof(array));
}
int main()
{
    int32_t myarray[10];
    printf("%ld\n",sizeof(myarray));
    print_size(myarray);
    return 0;
}

int32_t,int64_t是C语言为了在不同系统中能够统一运行程序而预先定义的类型,它包含在头文件stdint.h中。其实他们都是int类型,只是在不同的系统中他们的字节保持不变,例如:在32位系统中int32_t占4个字节,在64位系统中仍然占4个字节。这样就保证了在不同的系统中占用相同的字节。具体转换过程不需要考虑,有兴趣的同学可以去头文件中进行察看。int64_t同样的道理。

而对于上面的这个程序是在64位Linux系统中进行编译运行的,所以int32_t仍然位4个字节,所以打印的第一个结果为40,然而在调用函数时传递的是地址,地址在64位系统中占用的字节为8位,所以第二次打印的结果为8。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-25 03:05:44

64位linux系统下编译int32_t的相关文章

centos 64位linux系统下安装appt命令

首先,安装apktool包 1. wget http://android-apktool.googlecode.com/files/apktool-install-linux-r04-brut1.tar.bz2 2. tar -jxvf apktool-install-linux-r04-brut1.tar.bz2 3. mv aapt /usr/bin mv apktool /usr/bin 以上三步,完成了apktool包的安装 那么在64位操作系统下去执行aapt命令的话会报一下错误: -

MiniCRT 64位 linux 系统移植记录:64位gcc的几点注意

32位未修改源码与修改版的代码下载: git clone git@github.com:youzhonghui/MiniCRT.git MiniCRT 64位 linux 系统移植记录 MiniCRT是<程序员的自我修养:链接,转载于库>的作者俞甲子写的小型的C运行时库.里面提供了printf,malloc,free,fopen等比较常用的函数实现. 之所以要捣鼓这个东西,是因为要自己写一个链接器,链接标准库的时候出了麻烦,一些符号在整个libc中都找不到定义,标准库又太大,研究源码,翻文档都

解决VMware下64位linux系统不支持全虚拟化(vmx)

一.前提: cpu支持Inter VT-X或AMD虚拟化技术,具体参考官网说明. 二.问题描述: 物理机下,vmware workstation能安装64位CentOS系统,处理器Inter i3 M390,且支持Inter VT-X虚拟化技术,物理机BIOS中已打开Inter虚拟化开关(自己找),既然能安装64位系统,说明物理机BIOS中支持虚拟化开关已打开. 半虚拟化为pae 全虚拟化为vmx(Inter).svm(AMD) # uname -r 2.6.32-358.el6.x86_64

64位Win7系统下vs2010调试无法连接oracle

64位win7系统的Program Files (x86)路径中有括号,oracle不认识这样的路径,所以就出现不能连接数据库的问题.所以我们可以将vs2010的内部调试web服务器WebDev.WebServer20.EXE文件从Program Files (x86)路径中拷贝出来,放到oracle可以认识的路径中去,然后在调用该服务器调试就解决问题了. 1.将WebDev.WebServer20.EXE和WebDev.WebServer40.EXE文件从Program Files (x86)

64位linux系统无法运行Android sdk的adb和aapt,提示No such file or directory的解决办法

参考资料: http://askubuntu.com/questions/147400/problems-with-eclipse-and-android-sdk http://serverfault.com/questions/442792/ubuntu-12-04-apt-get-install-ia32-libs-unmet-dependencies http://my.oschina.net/uoy/blog/129108 本人在64位Debian上运行Android sdk目录下的ad

64位debian系统下安装inodeClient

linux下的inodeClient下载: 链接:http://pan.baidu.com/s/1jIoX6Zk 密码:vnws 里面包括一份说明书,一个32位的,一个64位的文件: 对于64位的客户端,适用于ubuntu/fedora/rocky 操作系统: 而我,电脑为debian, 虽然debian与ubunbu 的区别不大,但是直接安装还是会出现错误,需要修改一个 install.sh 文件 与 uninstall.sh文件:已经修改完成的文件如下(64位): 链接:http://pan

关于64位Windows7系统下INF的安装问题

原文 http://bbs.csdn.net/topics/360262492 我的电脑 ——>属性 ——>设备管理器 ——>操作 ——>添加过时硬件 但是,64位系统上报“指定的文件夹没有包含设备的兼容软件驱动程序......请确认它是为用于基于X64的系统的Windows设计的.” 则需要修改INF文件, 请参考:Creating INF Files for Multiple Platforms and Operating Systemshttp://msdn.microsof

vs2015+64位win10系统ceres-solver编译

记录下自己编译ceres-solver走过的弯路,同时希望对其他人能有所帮助. 编译过程主要参考以下两篇博文,但还是存在一些大坑,后面我会着重强调. http://blog.csdn.net/streamchuanxi/article/details/52944652 http://blog.csdn.net/yizhou2010/article/details/52596280 1. 下载必备库ceres-solver-1.11.0.eigen.gflags-2.0.glog-master 具

linux(64位的系统)下nasm进行汇编链接时出现的问题

出现问题: $nasm -f elf hello.asm -o hello.o $ld -s hello.o -o hello ld: i386 architecture of input file `hello.o' is incompatible with i386:x86-64 output 尝试: $ ld -m32 -s hello.o -o hello ld: unrecognised emulation mode: 32 Supported emulations: elf_x86_