我只是有如下一行:
int player = 1, i, choice;
我的问题是,分配给 i 的内容和分配给选择的内容是什么?我总是被教导不能将一个变量分配给多个值。
该代码相当于说
int player = 1;
int i;
int choice;
您没有将1
,i
和分配choice
到整数变量player
中。
在此任何地方都没有分配任何内容 - 它正在初始化而不是分配。
player
显然初始化为1。
如果此定义在命名空间范围内i
并且choice
具有静态存储持续时间,那么它们将被零初始化。
如果此定义是函数的本地定义,i
并且choice
将被默认初始化,这(在 的情况下int
)意味着它们没有被赋予可预测的值。
如果此定义在类内部,则i
并且choice
可以由构造函数初始化。编译器生成的构造函数将默认初始化它们。
它们 (i
和choice
) 具有未指定的值。它们几乎可以是任何价值,真的。除非您明确地将它们设置为一个值,否则它们会被赋予一些“垃圾”值(通常是已经分配给它们的内存位置中的任何内容)。
您没有分配player
多次。您正在创建 3 个变量,并分配1
给player
. 就像你写的一样:
int player = 1;
int i;
int choice;
把它想象成:
int player = 1;
int i;
int choice;
在 C++ 中,您可以在同一行声明多个相同的数据类型,例如
char c1, c2, c3;
并且也可以在他们的声明中为其中一个赋予一个值,就像你的行在做什么一样。因此,正如 simonc 所说, i 或选择将没有价值。
您所拥有的是定义和初始化,定义,定义;
int player = 1;
int i;// = most probably 'random' trash from heap/stack memory
int choice;// = most probably 'random' trash from heap/stack memory
i 和choice 没有定义。发生的事情是,您在说:我想将 player 声明为 int 并将 1 分配给它,然后是一个 sequens interupt sign(,),表示类型说明符引用了下一个 sequenz。也意味着将 i 和 selection 声明为 int (但不指定任何内容)