C语言代码中的问题:包含特定代码块时不显示
刽子手代码:第113-125行 除了包含这一行代码外,所有代码都很好:C语言代码中的问题:包含特定代码块时不显示,c,C,刽子手代码:第113-125行 除了包含这一行代码外,所有代码都很好: //Verify mask if all is filled up. int sea; gameover=1; // for(sea=0;sea<length;sea++) { if(!mask[sea]) {
//Verify mask if all is filled up.
int sea;
gameover=1;
// for(sea=0;sea<length;sea++)
{
if(!mask[sea])
{
gameover = 1;
break;
}
}
//验证掩码是否已填满。
内海;
gameover=1;
//对于(sea=0;sea此时-如果(!mask[sea])
,则变量sea
未赋值。您使用sea
的值作为mask
的偏移量。这会导致
注释掉的for
语句首先使用赋值运算符=
将整数0
赋值给sea
。假设mask
是一个数组,则使用sea
的值跳转到if
语句中数组的特定元素
现在,sea
是未赋值的,它可能是任何东西(甚至是负数)。因此,您试图使用未知索引访问数组中的某个元素。这就像您知道朋友住在哪条街上,但您不知道门牌号一样
HTH你能再解释一下吗?我应该把sea分配到哪里?你说的偏移量是什么意思?非常感谢。我刚刚分配了int sea=0的值;谢谢!明白了。我刚开始熟悉stackoverflowinitializesea
:int sea=0;
否则sea
可以有任何值,当你这样做的时候<代码>屏蔽[sea]
您可能正在执行屏蔽[-42]
并导致UB