一道面试题
4.
int func(int a)
{
int b;
switch(a)
{
case 1: 30;
case 2: 20;
case 3: 16;
default: 0
}
return b;
}
则func(1)=?
想问问这里的 b是做什么用的啊?直接返回b 是没有值的啊。。请高人解答。
4.
int func(int a)
{
int b;
switch(a)
{
case 1: 30;
case 2: 20;
case 3: 16;
default: 0
}
return b;
}
则func(1)=?
想问问这里的 b是做什么用的啊?直接返回b 是没有值的啊。。请高人解答。
看不出这题目有多大意思
b在整个函数生命期始终没有初始化,也没有赋过值,所以返回出去的b是一个不可预料的值。
收回上面的话,这题目的确有意思,仔细想了想运行结果为0
由于switch()没有break语句一路运行到底。
比如func(1)时
运行30; 20; 16; 0;
仔细看看,这些语句并非无意义。
化成汇编语言来看。
30; => mov ax, 30d
20; => mov ax, 20d
16; => mov ax, 16d
0; => mov ax, 0d
最后ax中的结果是0
执行return b其实就是对应汇编语句如下:
mov (WORD PTR)b, ax
ret
注:BC3.1运行结果为0,并非不可预料的值。
[此贴子已经被作者于2007-9-3 16:50:38编辑过]
我运行了一下,fun(1)的函数是随机的.
yuki,怎么解释这个现象了
[此贴子已经被作者于2007-9-3 16:52:38编辑过]