首页 > 试题广场 >

下面程序的输出结果是?

[单选题]
下面程序的输出结果是()
#include <iostream>
using namespace std;
int i = 0;
int fun(int n) {
    static int a = 2;
    a++;
    return (a * n);
}

int main() {
    int k = 5;
    {
        int i = 2;
        k += fun(i);
    }
    k += fun(i);
    cout << k;
    return (0);
}


  • 11
  • 12
  • 13
  • 14
//这道题是真的学习了
#include <iostream>
using namespace std;
inti = 0;
intfun( intn )
{
    staticinta = 2;
    a++;
    return(a * n);
}
 
 
intmain()
{
    intk = 5;
    {//表示作用域
        inti = 2;
        k += fun( i );//k=5+fun(2)=5+2*3=11;
    }
    k += fun( i );//k=11+fun(0)=11
    cout << k;
    return(0);
}
发表于 2015-09-13 18:24:04 回复(0)
这题学习了,原来不知单纯只是 { } 也能组成作用域。
1. 所以上题 { } 内使用的 i 是局部变量 i,i=2,在第一句 k += fun( i ) 后k变成了11
2. 第二句k += fun( i ) 是在 { } 外,使用的i是全局变量,i=0,所以 k += fun( i ) 后k加上了0等于11;
发表于 2015-08-24 12:19:11 回复(8)
考察点1:{ } 也能组成一个作用域,所以在{ }内 调用的是 int i = 2 而出了作用域 则是调用了全局的i
考察点2:静态局部变量
静态局部变量相当于全局变量(只是只有在这个函数中能访问,但是生命周期是和全局变量差不多的),函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化语句,保留原来的值(也就是说,如果a是static的,那么只有在第一次进入这个函数的时候会执行a=2,以后都不会执行。)。
发表于 2015-09-11 18:58:05 回复(0)
本题考查几点,一是静态变量,只分配一次,在下一次使用它时仍维持上次调用产生的结果,a=2,然后a++之后变成3,下次调用时仍维持3;二是全局变量和局部变量的生存期,i=0为全局变量,i=2为局部变量。
发表于 2015-09-04 16:03:12 回复(0)
A
考点:当局部变量和全局变量重名时,局部变量会屏蔽全局变量
发表于 2015-04-13 22:33:39 回复(1)
这里局部变量为2。全局变量为o。括号内为5+3*2=11,括号外11
发表于 2022-01-13 00:04:21 回复(0)
全局变量{作用域} 11 若无作用域,静态局部变量(单次初始化) 19
发表于 2020-04-28 17:10:40 回复(0)
问题点:上面还有一个全局变量i,没考虑
发表于 2023-02-28 09:50:07 回复(0)
因为a为静态全局变量,所以,函数调用要完a不会被销毁,第一次调用,a=2,a++后为3,所以第二次调用函数,不会在执行a=2的语句,a仍然为3
发表于 2022-04-23 06:35:12 回复(0)
。。。
发表于 2022-03-24 07:59:49 回复(0)
没看到全局变量 我就说嘛 咋会编译成功的
发表于 2021-06-16 00:42:49 回复(0)
第一次11,第二次0,简单
发表于 2020-08-04 14:38:54 回复(0)
该注意的都注意了,就是做题做习惯了,a++,默认以为用a没自加之前的值了,应该用a自加之后的值
发表于 2019-05-13 18:48:34 回复(0)

这题里变量i定义类型分为局部变量和全局变量。

局部值为2,全局为0

main函数里{}中执行的出来的k值为5+3*2=11//作用的是局部变量

括号外的K=11+0*3=11; //作用的是全局变量

反映了局部变量的有限性。

发表于 2019-01-26 22:04:14 回复(0)
如大家所说,是作用域的问题。所以平时可不能为了好看,而随便加花括号啊!要不是碰到这题我很可能会在某一天这样干,受教了
发表于 2017-05-21 20:41:48 回复(1)
{}也构成作用域,我实在使用Qt的QMutexLocker里面学习的,印象最深刻,因为超出了这个作用域,QMutexLocker的析构函数会被自动调用,从而“解锁”
发表于 2016-08-09 10:27:20 回复(0)
注意这道题是单选就行了!一目了然................
发表于 2016-06-27 10:34:54 回复(0)
表示不理解
发表于 2015-08-22 10:44:07 回复(0)
没有静态局部变量的考点吗?
发表于 2015-06-09 17:28:06 回复(1)
发表于 2015-04-07 15:13:52 回复(0)