假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

1 #include <stdio.h>
2 int main(){
3   long long a = 1, b = 2, c = 3;
4   printf("%d %d %d\n", a, b, c);
5  return 0;
6 }

1 printf()是一个库函数,C,C++中函数的参数是从右往左入栈的;

2 栈的生长方向是从高往低的

3 小端模式是低位存储在低字节

4 %d格式输出的是4个字节大小,而long long为8个字节

所以,a=1,b=0,c=2

时间: 2024-10-06 12:08:26

假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?的相关文章

在32位小端的机器

在32位小端的机器上,如下代码输出是什么: 1 char array[12] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08}; 2 short *pshort = (short *)array; 3 int *pint = (int *)array; 4 int64 *pint64 = (int64 *)array; 5 printf("0x%x , 0x%x , 0x%x , 0x%x", *pshort , *(p

32位机内存管理机制(上)

一直有看linux内核的冲动,内核有些部分是汇编编写的,无奈汇编不大懂,所以利用五一三天假期大概走了一边8086CPU架构的汇编,8086CPU还是16位的,我们现在都进入64位时代了,这两者之间有很大的区别,但是看看16位的CPU汇编还是很重要的,这有助于理解32位的80386CPU.这篇文章来分析下80386的内存管理的一些基础知识,包括实模式.保护模式和内存寻址等等. 1.实模式 处理器被复位或者加电的时候以实模式启动.这时候处理器中各寄存器以实模式的初始化值工作. 80386处理器在实模

如何确定Hadoop守护进程分别会在哪台机器上运行

经过一段时间的配置,Hadoop环境总算运行起来了,但是呢,为何主节点就没有跑tasktracker和datanode进程,slave节点也没有跑secondary进程,Hadoop是如何控制的呢? 经过看权威指南(267页)和跟群里同学讨论,还有自己测试,最终确定: tasktracker和datanode这两个守护进程 —— 只会在conf/slaves文件里指定的那些节点上运行 secondarynamenode 这个守护进程 —— 只会在conf/masters文件里指定的那个节点上运行

一台机器上运行多个ActiveMq

由于业务需要一台机器上运行多个ActiveMq,这里主要说一下有什么地方不重复: 1.brokerName名称不能重复 2.端口号不能重复uri = tcp://localhost:50509 3.kahadb路径不能重复 4.管理端口不能重复contextPort = 2019 jmxServiceUrl = service:jmx:rmi:///jndi/rmi://localhost:2019/jmxrmi

vs2013编译的程序在其他机器上运行的环境设置

vs2013编译的程序在其他没有安装vs2013的机器上运行会有问题,网上有很多解决方法,如果你还没有解决,可以尝试以下方法,这是我在反复崩溃,烦躁测试后得到的解决方法. 1. 安装vs2013 运行包 vcredist_x64.exe 如果这个时候还是不能正常执行,请不要和我一样崩溃, 试试我的解决方法,对这个运行包进行修复 控制面板--程序--程序和功能 在程序列表里找到 vc++ 12.0.30501 选中,修复 这样就可以打开vs2013编译出来的程序了,我碰到的情况是这样解决的. ==

在没装VS2010的机器上运行VS2010开发的C++程序

在VS2010下写了一个win32控制台应用程序,编译ok.exe,需要依赖osg相关动态库 第一次编译的是Debug版本的,直接将ok.exe和osg相关dll文件拷贝到没有安装VS2010机器上运行,报错 “.....计算机中丢失MSVCR100D.DLL...” 解决方法: 1.不能使用Debug编译,需要编译Release版本 2.在没装VS2010的机器上安装vcredist_x86.exe,这个文件可以在http://www.microsoft.com/zh-CN/download/

VS2010生成的文件在别的机器上运行提示“丢失MSVCR100D.dll”&lt;转&gt;

用vs2010编写的程序经常会发生的一个问题.在自己的机器上运行的好好的,但是在别的机器上就会发生没有找到MSVCR100D.dll.这是 个很头疼的问题.对于一些代码量几百行的小程序,我不可能要求其他电脑也一定要配有MSVCR100D.dll这个dll.当然解决方法也有,但是我也不 可能要求所有的电脑都装上.net framwork 2.0.微软又给CSer们出了个难题. 解决方法: 在vs2010下,按ALT+F7,打开工程属性–>配置属性–>C/C++–>代码生成–>运行时库

VS2013生成Release版本MFC程序在其他机器上运行

对于自己机器安装了VS开发环境,生成MFC的exe文件能够在自己机器上运行,复制到其他目标机器可能出现不能运行的情况.下面就个人经历将发布的两中情况简要说明. 1.工程属性中:配置属性-常规,MFC使用类型选择“在共享的DLL中使用MFC”:C/C++ - 代码生成-MFC的使用 选择“多线程DLL(/MD)”这种情况下,若直接将exe文件放到目标机器运行,则需要目标机器安装相应的开发平台.或者将生成exe程序的依赖dll文件复制到目标机器的程序运行目录下:若用到第三方库,也要复制相应的dll文

32位 PLSQL Developer 连接不上64位的 oracle 数据库问题处理

碰到这个问题,网上搜索了很多,大多解释的不准确,探索之后按自己的理解写一下怎么解决. 现象:问题网上说的比较清楚了,使用 PLSQL Developer 连接数据库会报一个与无法定位 oci.dll 文件的问题,可能有不同的报发,但问题都是在说这个文件的问题. 原因:这里使用的 PLSQL Developer 是32位,而数据库是64位的,所以 PLSQL Developer 无法使用数据库的64位 oci.dll 库. 解决:安装一个32位的数据库客户端,然后搜索其中的 oci.dll 文件的