首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

2013腾讯见习生笔试题.求解

2013-04-26 
2013腾讯实习生笔试题...求解5.假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?#incl

2013腾讯实习生笔试题...求解
5.假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?


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


6.下面哪些函数调用必须进入内核才能完成?

A. fopen B. exit C. memcpy D. strlen
腾讯
[解决办法]
引用:
我用下面的代码测了一下:
C/C++ code?12345long long a=1, b=2, c=3;printf("%d  %d  %d\n", a, b, c);printf("%d  ", a);printf("%d  ", b);printf("%d\n", c);
得到的显示是:
1  0  2
1  2  3

这是什么情况?
        ……
参数是右向左压栈的。。。所以分开和写在一起不一样
[解决办法]
第一题考的是printf函数的原型,printf(const char*,...);
第二个参数是任意个数目的参数,所以printf函数不可能分个把参数入栈,而是一股脑全部压入堆栈,而接下来就是根据字符串的格式取数据的过程,参考4,5楼。
[解决办法]
第一题
printf的参数压栈之后在内存中是这样的 0100 0000 0000 0000 0200 0000 0000 0000 0300 0000 0000 0000
但是按照%d的格式输出,每次只能取4个字节,也就是 0100 0000,0000 0000,0200 0000,所以答案是1 0 2
[解决办法]
fopen构建在非缓冲的文件系统API(例如open/close/read/write)之上而已。

引用:
引用:1、格式与类型不匹配,无法预料结果;
2、exit。fopen没有调用内核吗

热点排行