Code Bye

这个表达式怎么理解?for(int j = 0, have = 1; j < num; j++)

 

这个循环表达式:
for(int j = 0, have = 1; j < num; j++)
{

}

和别的循环表达式不同的地方在于:它的int j = 0后面,多了一个逗号和have = 1

编译没有错误,怎么理解这个?have是新定义的新变量?还是旧变量赋值?

这个逗号表达式,前面一个int j = 0,怎么理解?如果只是j = 0,那可以看成一个赋值表达式,其值等于右边的0,但前面多了一个int ,不影响吧?仍然算是一个赋值表达式吧?

for的第一部分可以是变量声明也可以是表达式,在这个例子中是声明。
int直到分号前都有效。
随用随声明是C++语法。
这个事典型的c++生命语句。
那个int j=0,have=1;就是一个变量声明语句而已。这是c++的风格。标准C没有。
引用 4 楼 hhhhhhhhhhkkkkkkkkkk 的回复:

那个int j=0,have=1;就是一个变量声明语句而已。这是c++的风格。标准C没有。

 这表示什么?是定义int j,再改变已有变量have的值,而不是定义新变量have?

int j=0,have=1;等于int j=0;int have=1;int j=0,have=1;这样写方便,是C++的基础语法
C99从C++引入的新特性
1.定义循环变量
2.作用域据域仅在for循环体
3.不算赋值表达式,算初始化
20分
引用 5 楼 mbctb 的回复:
Quote: 引用 4 楼 hhhhhhhhhhkkkkkkkkkk 的回复:

那个int j=0,have=1;就是一个变量声明语句而已。这是c++的风格。标准C没有。

 这表示什么?是定义int j,再改变已有变量have的值,而不是定义新变量have?

不是,定义了j和have这两个变量,都是int型的,同时为他们赋了初始值。

#7   正解!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明这个表达式怎么理解?for(int j = 0, have = 1; j < num; j++)