在c++中这是一个有效的赋值吗?

Is this a valid assignment in C++?

本文关键字:有效 一个 赋值 c++      更新时间:2023-10-16

当我查看库代码时,我发现下面的行

int number = config.nodes,i,fanout=numP/2;

我假设配置是指向某物的指针,但在语句中可以有逗号吗?做这样的作业?

声明了三个变量。与

相同
int number = config.nodes
int i;
int fanout = numP/2;

请注意,逗号是在声明(和参数列表)中特别处理的,c++也有一个"逗号操作符",这里没有使用。

这是有效的,number并没有被分配到你看到的整行

ifanout是另外两个正在被初始化的整数,fanout也正在被初始化。

这一行相当于:

int number = config.nodes;
int i;
int fanout = numP/2;

它基本上有很多声明:

    int number = config.nodes;
    int i;
    int fanout=numP/2;

更容易辨认的写法是:

int number, i, fanout;
number = config.nodes;
fanout = numP/2;

我个人永远不会写像你的例子那样的东西,因为读者要花很长时间才能弄清楚发生了什么。

我有以下补充:

1)空格总是被c++编译器忽略。

int number  =   config.nodes,i,fanout=numP/2;

等价于

// declaring three variables number, i and fanout
int number=config.nodes, i, fanout = numP/2; 

这里的逗号是告诉编译器我有多个变量要声明。因此,number将使用config.nodes初始化。如果config是一个指针(如上所述),那么您不能使用.操作符访问成员变量。你必须使用->而不是.

2)下面这行有不同的语义:

// only one variable will be declared, which is number
int number  =  (config.nodes,i,fanout=numP/2);

括号内是一个表达式,这里的逗号是一个逗号操作符。在本例中,configifanoutnumP是先前定义的。逗号操作符的值为最后一个表达式fanout=numP/2的值

相关文章: