首页 > 试题广场 >

该函数参数为1时返回值为: int GetResult(in

[单选题]
该函数参数为1时返回值为()
int GetResult(int a){
    int b = 0;
    __try{
        if ( a != 0 ){
            b++;
        }
        return b;
    }
    __finally{
        --b;
    }
    return b;
}


  • -1
  • 0
  • 1
  • 2

转自《Windows核心编程》:
本题中:
finally块中的代码会执行,但是try中已经返回了,所以返回b=1;
返回后,执行finally中的代码--b,b=0;
但是finally后面的代码return b不执行。所以返回还是1;但是此时b=0;










发表于 2019-04-16 14:11:35 回复(3)

finally之前的return会压入栈中,finally中的语句一定会执行,如果finally中有return语句则直接返回,finally之后的语句就不会执行。所以返回的是第一个return b = 1

发表于 2021-07-04 11:08:04 回复(1)
执行try里的return返回的一刹那前会将返回的结果暂存,即b=1,此时会先检查是否有finally,如有,去执行finally,如果finally里有return,则直接在finally里进行返回,如无,则执行完finally里的代码块后返回之前暂存的值,即返回b=1,但此时实际b=0。
发表于 2023-04-13 00:42:51 回复(0)

finally 会执行,但是后面的 return 不会执行


发表于 2020-03-23 08:31:54 回复(0)
这段代码是一个函数`GetResult`,它接受一个整数参数`a`,并返回一个整数结果。

函数开始时,定义了一个整数变量`b`并初始化为0。接下来,使用`__try`关键字标记一个异常处理块。

在异常处理块内部,首先检查`a`是否不等于0。如果是,则将`b`的值增加1。然后,使用`return`语句将`b`的值返回。

在`__finally`块中,`b`的值减少1。`__finally`块中的代码在函数返回之前总是会执行,无论是否发生异常。

最后,在函数的末尾,使用`return`语句再次返回`b`的值。

总结来说,函数的功能是根据参数`a`的值来确定返回值`b`。如果`a`不等于0,则返回1;否则返回0。无论返回哪个值,`b`的值都会减少1。
发表于 2023-09-18 12:44:28 回复(0)
 
这里,在_try函数体内,return语句将变量b的值暂存,然后跳转到_finally块,_finally块中若无return,则再返回到_try块中返回暂存值
发表于 2022-05-02 17:48:03 回复(0)
如果finally里面有return b.返回啥
发表于 2023-08-08 23:21:05 回复(0)
可以理解为如果在Finally之前出现return语句,那么return执行后finally里面的语句还是会执行嘛
发表于 2021-04-24 14:30:28 回复(1)
<p>C语言中&amp;和‖的逻辑问题,当与前面的语句为假时,直接判断为假,所以后面的m还是为零。如果语句中的判断语句是的话,那么执行完前面的语句后还会执行后面的语句。</p>
发表于 2020-07-22 14:48:35 回复(0)