一道面试题
											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 是没有值的啊。。请高人解答。
 2007-09-03 14:55
	    2007-09-03 14:55
   2007-09-03 16:02
	    2007-09-03 16:02
   2007-09-03 16:02
	    2007-09-03 16:02
   2007-09-03 16:23
	    2007-09-03 16:23
   2007-09-03 16:28
	    2007-09-03 16:28
   2007-09-03 16:36
	    2007-09-03 16:36
  看不出这题目有多大意思
b在整个函数生命期始终没有初始化,也没有赋过值,所以返回出去的b是一个不可预料的值。

 2007-09-03 16:42
	    2007-09-03 16:42
  收回上面的话,这题目的确有意思,仔细想了想运行结果为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编辑过]

 2007-09-03 16:49
	    2007-09-03 16:49
   2007-09-03 16:50
	    2007-09-03 16:50
  我运行了一下,fun(1)的函数是随机的.
yuki,怎么解释这个现象了
[此贴子已经被作者于2007-9-3 16:52:38编辑过]

 2007-09-03 16:52
	    2007-09-03 16:52