c语言for语法初始化用等于==不用赋值符号=会怎样?

如题所述

在 C 语言的 for 循环中,通常使用等于符号 "==" 来进行变量的初始化操作,而不是赋值符号 "="。如果误用赋值符号 "=",会导致循环的初始化操作出现错误。

例如,以下代码使用了赋值符号 "=" 来进行变量的初始化:

```c
for (int i = 0; i < 10; i++) {
printf("%d ", i);
}
```

在这个例子中,循环变量 i 的初始化操作应该使用等于符号 "==",而不是赋值符号 "="。由于赋值符号会将右侧的值赋给左侧的变量,因此上面的代码会将 0 赋给 i,然后检查 i 是否小于 10,因为 0 小于 10,所以循环体会被执行。接下来,在循环的最后一行,i 的值被增加了 1,变成了 1。然后,循环条件再次被检查,因为 1 小于 10,所以循环还会继续执行。但是,由于使用了赋值符号而不是等于符号,循环的初始化操作只会在第一次执行时生效,后续循环中 i 的值不会被重新初始化为 0。因此,上面的代码会输出:

```
0 1 2 3 4 5 6 7 8 9
```

如果改用等于符号 "==" 来进行变量的初始化,则不会出现上述问题:

```c
for (int i = 0; i < 10; i++) {
printf("%d ", i);
}
```

这个代码会按照预期输出:

```
0 1 2 3 4 5 6 7 8 9
```

因此,在 C 语言的 for 循环中,应该使用等于符号 "==" 来进行变量的初始化操作,以避免出现意外的错误。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-03-08
在C语言中,for循环的语法中,有一个初始化子句,它用于在循环开始之前初始化一个变量。这个初始化子句可以使用等于号(=)来为变量赋值,也可以使用双等于号(==)来进行比较操作,但是这两种方式的作用是不同的。

如果你使用等于号(=)来初始化变量,那么这个变量将被赋予初始值,并且在每次循环迭代时都会被重新赋值。这意味着,如果你在循环体内修改了这个变量的值,那么它将在下一次迭代中使用新的值。

如果你使用双等于号(==)来初始化变量,那么实际上是在进行比较操作。这个比较操作将初始值与变量的当前值进行比较,如果它们相等,那么循环将继续执行。否则,循环将终止。

因此,如果你使用双等于号(==)来初始化变量,它并不会真正地为变量赋值。相反,它只是在比较初始值和变量的当前值。如果你想为变量赋值,你必须使用等于号(=)。

总之,使用等于号(=)来初始化变量是常规做法,而使用双等于号(==)则是一种比较操作。在for循环中,使用双等于号(==)来进行初始化是不合适的,因为它并不会真正地为变量赋值。
第2个回答  2022-12-13

使用==,把表达式就是单纯的判等,不会对对应的变量赋值,则变量可能是垃圾值(取决于你之前有无赋初值),则执行循环体次数多半不会按照你的预期

相似回答