首页 > 试题广场 >

函数外部下列x等于什么?

[单选题]
enum string{    
    x1,    
    x2,    
    x3 = 10,    
    x4,    
    x5,    
} x;
函数外部访问x等于什么?
  • 5
  • 12
  • 0
  • 随机值
C

如果是函数外定义那么是0
如果是函数内定义,那么是随机值,因为没有初始化
发表于 2015-01-13 13:03:29 回复(10)
枚举变量是全局变量的情况下, 枚举值的缺省值是0,不是枚举的第一个值。 其他情况,其值是不定的,而且不限定于所列出的枚举值。
发表于 2016-03-11 21:26:21 回复(2)
全局变量时初始化为0,局部变量时初始化为随机值。
发表于 2016-05-24 17:05:03 回复(3)
还是弄个图吧

发表于 2015-05-15 11:04:22 回复(9)
在全局域定义enum,输出x是0,但是在局部域定义enum,输出x是随机数。
发表于 2015-08-10 09:44:25 回复(3)
这道题最主要考察了变量自动初始化相关知识点:
变量自动初始化分为内置类型和类类型之分:
1.内置类型的自动初始化:程序中有一个数据区,用来存放已初始化全局变量,静态变量和常量,这部分增加了目标文件的大小;还有一个未初始化数据区(BSS),用来存放未初始化全局变量,BSS的数据在程序开始执行之前被初始化为0或NULL,实际上BSS段数据在目标文件中只占一个符号位,编译器并没有给变量分配空间,“初始化为0”是指链接阶段才申请空间,并初始化。局部 非静态变量未显示初始化时是一个随机值。
2.类类型的自动初始化:没什么特别的,无论是全局的还是局部的,都会调用默认构造函数进行初始化,有一点需要注意的是,当对象为全局作用域或者静态局部对象时,类的内置成员变量被初始化为0,而局部作用域时,内置成员变量不被自动初始化。
发表于 2017-06-08 17:42:30 回复(0)
题目有问题
发表于 2015-08-13 13:03:46 回复(0)
C
在c语言中,这样写法一般是全局变量,程序初始化时会清零.
编辑于 2017-03-28 20:58:38 回复(9)
用g++测试,如果在函数外部定义,则无论x1是0还是123,x都会被初始化为0。
在函数内部,则是随机数。
发表于 2015-03-05 10:27:21 回复(2)
选C
又是"喜大普奔"的“默认初始化”知识点,《C++ primer 5th》p40 默认初始化这一点里提到
内置类型的变量,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0.而定义在函数体内部的内置类型变量将不被初始化。
根据题意,函数外部,则应该被初始化为0
发表于 2017-03-17 15:09:08 回复(2)
enum只是定义了一个常量集合,里面没有“元素”,枚举类型是当做int类型存储的, sizeof值都为4 ,并且系统为其初始化为0;
发表于 2015-09-04 16:40:55 回复(1)
这个x定义在enum外面,很少见啊.不知道考点是什么?
发表于 2019-01-25 19:30:42 回复(0)
#include<iostream>
using namespace std;
enum string1{
    x1=10,x2,x3,x4,x5
} x,y=x1,z=x2,a=x3,b=x4,c=x5;
void main(){
    enum string2{
        x1,x2=10,x3,x4,x5
    } o=x1,p=x2,q=x3;
    cout<<x<<endl;
    cout<<y<<endl;
    cout<<z<<endl;
    cout<<a<<endl;
    cout<<b<<endl;
    cout<<c<<endl;
    cout<<endl;
    cout<<o<<endl;
    cout<<p<<endl;
    cout<<q<<endl;
}
可以发现全局定义的枚举类型变量,如果不定义初值,系统默认赋值0,与枚举变量中的取值无关。局部定义枚举类型变量,如不定义初值则无法调用。
发表于 2017-11-30 10:57:25 回复(0)
枚举类型

发表于 2016-05-26 11:11:30 回复(0)
D
取值在0、1、10、11、12中的一个
发表于 2014-12-29 16:50:06 回复(1)

在代码中,枚举成员默认被赋予一个递增的整数值,从 0 开始。因此,x1 的值为 0,x2 的值为 1,x3 的值为 10,x4 的值为 11,x5 的值为 12。

当定义枚举变量 x 时,默认情况下它被赋值为枚举类型中的第一个成员 x1 的值,即 0。因此,访问枚举变量 x 时会得到 x1 的值,也就是 0。

所以,函数外部访问 x 的值会得到 x1 的值,选项 A 是正确答案。

发表于 2023-10-18 20:27:16 回复(0)
<<C++ Primer Plus>>:
可以使用赋值运算符来显示地设置枚举量的值:
enum bits{ ones = 1, two = 2, fours = 4, eight = 8;
指定的值必须是整数,也可以只显示地定义其中一些枚举量的值:
enum bigstep{first, second = 100, third}
这里,first在默认情况下是0,后面没有初始化的枚举量的值将比其前面的枚举量大1,所以third是101
最后,可以创建多个值相同的枚举量:
enum {zeros, null = 0, one, numero_uno = 1}
其中,zero 和 null 都为0,one 和umero_uno都为1,
发表于 2020-08-14 21:53:40 回复(0)
1.枚举变量是全局变量的情况下,枚举值的缺省值是0,不是枚举的第一个值。 2.其他情况,其值是不定的,而且不限定于所列出的枚举值。
发表于 2019-10-13 18:44:29 回复(0)
C++的存储方式通过存储持续性,作用域和链接性来描述。
这里考察的是存储持续性,包括4种:
自动存储持续性,静态存储持续性,线程存储持续性,动态存储持续性。

函数外访问,说明该变量x定义在函数之外,其为静态持续变量(静态存储持续性),
在没有显示初始化静态变量时,编译器将它默认设置为0。

如果定义在函数内部,则为自动存储变量,编译器不会作默认初始化操作,
不经初始化其值是随机的。

编辑于 2019-05-13 11:00:31 回复(0)
x是一个全局变量,存储在数据区,默认值为0。
如果是函数外定义那么是0
如果是函数内定义,那么是随机值,因为没有初始化
发表于 2017-06-04 10:58:45 回复(0)