2

我只是有如下一行:

   int player = 1, i, choice;

我的问题是,分配给 i 的内容和分配给选择的内容是什么?我总是被教导不能将一个变量分配给多个值。

4

6 回答 6

4

该代码相当于说

int player = 1;
int i;
int choice;

没有1,i和分配choice到整数变量player中。

于 2013-08-23T14:11:34.717 回答
3

在此任何地方都没有分配任何内容 - 它正在初始化而不是分配。

player显然初始化为1。

如果此定义在命名空间范围内i并且choice具有静态存储持续时间,那么它们将被零初始化。

如果此定义是函数的本地定义,i并且choice将被默认初始化,这(在 的情况下int)意味着它们没有被赋予可预测的值。

如果此定义在类内部,则i并且choice可以由构造函数初始化。编译器生成的构造函数将默认初始化它们。

于 2013-08-23T14:13:21.637 回答
1

它们 (ichoice) 具有未指定的值。它们几乎可以是任何价值,真的。除非您明确地将它们设置为一个值,否则它们会被赋予一些“垃圾”值(通常是已经分配给它们的内存位置中的任何内容)。

您没有分配player多次。您正在创建 3 个变量,并分配1player. 就像你写的一样:

int player = 1;
int i;
int choice;
于 2013-08-23T14:11:48.003 回答
1

把它想象成:

int player = 1;
int i;
int choice;

在 C++ 中,您可以在同一行声明多个相同的数据类型,例如

char c1, c2, c3;

并且也可以在他们的声明中为其中一个赋予一个值,就像你的行在做什么一样。因此,正如 simonc 所说, i 或选择将没有价值。

于 2013-08-23T14:12:11.210 回答
1

您所拥有的是定义和初始化,定义,定义

int player = 1;
int i;// = most probably 'random' trash from heap/stack memory
int choice;// = most probably 'random' trash from heap/stack memory
于 2013-08-23T14:12:45.780 回答
0

i 和choice 没有定义。发生的事情是,您在说:我想将 player 声明为 int 并将 1 分配给它,然后是一个 sequens interupt sign(,),表示类型说明符引用了下一个 sequenz。也意味着将 i 和 selection 声明为 int (但不指定任何内容)

于 2013-08-23T14:12:34.803 回答