c*********t 发帖数: 2921 | 1 就是写出printf的输出结果。
假设这些代码运行在intel cpu, 32bit.
integer 四个bytes.
如果能在十分钟内把这些题都做对,(前提:不去看书,不在计算机上运行),肯定是
对C很熟的。
我今天面试被问到对C 的了解程度,我说 level 10,就被给了这些题,做完后回家才发
现错了很多。感觉很羞愧。
//test1
#include
int main()
{
int i=3;
int j;
j=sizeof(++i + ++i);
printf("i= %d j= %d \n", i, j);
} |
a*****p 发帖数: 189 | 2 呵呵,也算小见识了一下。
俺也一直认为自己C语言不错,结果还是错了第二题的*(t+1), 这个的确有点难想到,
考察到了Intel的stack增长方向。看题目的时候就觉得b这个数组有点古怪。anyway,
lz别放心上,不过以后还是要稍微谦虚一点。俺一直都说自己C语言水平是7,呵呵。 |
t****t 发帖数: 6806 | 3 什么鸟公司, 第一题就不make sense
++i + ++i这种,i什么结果都可能有的
【在 c*********t 的大作中提到】 : 就是写出printf的输出结果。 : 假设这些代码运行在intel cpu, 32bit. : integer 四个bytes. : 如果能在十分钟内把这些题都做对,(前提:不去看书,不在计算机上运行),肯定是 : 对C很熟的。 : 我今天面试被问到对C 的了解程度,我说 level 10,就被给了这些题,做完后回家才发 : 现错了很多。感觉很羞愧。 : //test1 : #include : int main()
|
c*********t 发帖数: 2921 | 4 你太牛了。你做错的这个是我自己加上去的。
原题没有数组b[],是我想看看大家对stack的了解程度(local variables被推进stack
时,stack的地址在变小)。这个是我玩的一个trick.如果仅仅是这个错的话,你比俺
强多了。
我对两维数组给搞懵了。很久没有用过他们了。
【在 a*****p 的大作中提到】 : 呵呵,也算小见识了一下。 : 俺也一直认为自己C语言不错,结果还是错了第二题的*(t+1), 这个的确有点难想到, : 考察到了Intel的stack增长方向。看题目的时候就觉得b这个数组有点古怪。anyway, : lz别放心上,不过以后还是要稍微谦虚一点。俺一直都说自己C语言水平是7,呵呵。
|
t****t 发帖数: 6806 | 5 还在说这个呢,给你看看这题有多脑残
http://mitbbs.com/article/Programming/31179415_3.html
stack
【在 c*********t 的大作中提到】 : 你太牛了。你做错的这个是我自己加上去的。 : 原题没有数组b[],是我想看看大家对stack的了解程度(local variables被推进stack : 时,stack的地址在变小)。这个是我玩的一个trick.如果仅仅是这个错的话,你比俺 : 强多了。 : 我对两维数组给搞懵了。很久没有用过他们了。
|
c*********t 发帖数: 2921 | 6 sizeof()不算operand的值,只看类型type.
所以i的值仍是 3.
【在 t****t 的大作中提到】 : 什么鸟公司, 第一题就不make sense : ++i + ++i这种,i什么结果都可能有的
|
t****t 发帖数: 6806 | 7 哦, 这个是我忽略了。
但是第二题仍然是脑残。
【在 c*********t 的大作中提到】 : sizeof()不算operand的值,只看类型type. : 所以i的值仍是 3.
|
c*********t 发帖数: 2921 | 8 我今天是对第四题的这行给弄晕了。
int (*ptr)[3] = a;
现在明白了。
【在 t****t 的大作中提到】 : 哦, 这个是我忽略了。 : 但是第二题仍然是脑残。
|
H*M 发帖数: 1268 | 9 晕.你说自己是10..
【在 c*********t 的大作中提到】 : 我今天是对第四题的这行给弄晕了。 : int (*ptr)[3] = a; : 现在明白了。
|
H*M 发帖数: 1268 | 10 给thrust大侠提个意见
看到你在programming发的很多见解,收获颇多,是个真正懂得人
但是可不可以稍微温和一点
指出错误就可以了,要不大家都不敢随便发言了,多谢....
【在 t****t 的大作中提到】 : 还在说这个呢,给你看看这题有多脑残 : http://mitbbs.com/article/Programming/31179415_3.html : : stack
|
|
|
u***i 发帖数: 489 | |
c*********t 发帖数: 2921 | 12 Here is the results I got on my ubuntu (8.04) machine.
Compiled by gcc with all default options like gcc -o test1 test1.c
gcc version: gcc (GCC) 4.2.4
This result is just for reference. |
a****l 发帖数: 8211 | 13 Question 1 is bullshit.
First answer: NEVER predict the result by saying "what I see on my machine"!
【在 c*********t 的大作中提到】 : 就是写出printf的输出结果。 : 假设这些代码运行在intel cpu, 32bit. : integer 四个bytes. : 如果能在十分钟内把这些题都做对,(前提:不去看书,不在计算机上运行),肯定是 : 对C很熟的。 : 我今天面试被问到对C 的了解程度,我说 level 10,就被给了这些题,做完后回家才发 : 现错了很多。感觉很羞愧。 : //test1 : #include : int main()
|
R***r 发帖数: 120 | |
b**********r 发帖数: 46 | 15
test3写错了。
正确版本
#include
int main()
{
char *p;
char buf[10] = {1, 2, 3, 4, 5, 6, 9, 8};
p = &(buf+1)[5];
printf("%d \n", *p);
}
【在 u***i 的大作中提到】 : test3 没搞懂。。
|