当我查看库代码时,我找到了以下行
int number = config.nodes,i,fanout=numP/2;
我假设config是指向某个东西的指针,但声明中是否有逗号?并做出那样的任务?
答案 0 :(得分:8)
这声明了三个变量。它与:
相同int number = config.nodes
int i;
int fanout = numP/2;
请注意,逗号是在声明(和参数列表)中专门处理的,C ++也有一个“逗号运算符”,这里没有使用它。
答案 1 :(得分:1)
它是有效的,但是没有为你看到的整行分配数字。
i
和fanout
是当时正在创建的另外两个整数,此时fanout
也正在初始化。
这一行相当于:
int number = config.nodes;
int i;
int fanout = numP/2;
答案 2 :(得分:1)
它的声明基本上很多:
int number = config.nodes;
int i;
int fanout=numP/2;
答案 3 :(得分:0)
更可识别的方法是:
int number, i, fanout;
number = config.nodes;
fanout = numP/2;
我个人永远不会写出类似你的例子,因为读者花了很长时间才能弄清楚发生了什么。
答案 4 :(得分:0)
我有以下补充:
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);
括号内是一个表达式,这里的逗号是逗号运算符。在这种情况下,之前定义了config
,i
,fanout
和numP
。逗号运算符的值是最后一个表达式fanout=numP/2
的值。