C++ 一行中有多个运算符

C++ 一行中有多个运算符,c++,algorithm,operators,C++,Algorithm,Operators,//For循环中的代码是如何工作的?我对这里的多个运算符感到困惑。因为 vector<int> G[MAXN] ; char isLeaf[MAXN] ; int n,path; for(int i = 0;i < n;i++) path -= isLeaf[i] = G[i].size() == 1 ; 相当于: path -= isLeaf[i] = G[i].size() == 1 ; 如果为了清晰起见将其划分为多个语句,则会得到: path -= (isLea

//For循环中的代码是如何工作的?我对这里的多个运算符感到困惑。

因为

vector<int> G[MAXN] ;

char isLeaf[MAXN] ;

int n,path;

for(int i = 0;i < n;i++) path -= isLeaf[i] = G[i].size() == 1 ;
相当于:

path -= isLeaf[i] = G[i].size() == 1 ;
如果为了清晰起见将其划分为多个语句,则会得到:

path -= (isLeaf[i] = (G[i].size() == 1));

@BenVoigt G是一个向量数组。@GillBates:是的,刚刚注意到,我被糟糕的格式分散了注意力。请阅读并研究运算符优先级。此外,赋值运算符也会返回一个值。运算符==将返回true或false值,对于false,可以将其转换为整数常量0;对于true,可以将其转换为非零。邪恶的代码。不要抄袭。扔进垃圾并重写。我不能让这些复杂的行充满操作符——那么,把代码分发到更多的行和语句上。如果您使用的是IDE,它将提供格式化源代码的功能——试试看。赋值运算符是右关联的。与托马斯·马修斯(Thomas Matthews)相呼应:依赖于比较运算符的数值或!是否。我最喜欢使用条件重写?met:not_met表达式会在注释中被破坏。整个程序正在运行。g[i]是向量数组。最后我得到了解决方案,并成功地使用它进行了调试。该行表示,如果G[i]向量的大小为1,则1将分配给isLeaf[i],1将从路径中扣除,如果G[i]。大小不等于1,则0将分配给isLeaf[i],0将从路径中扣除。
bool temp = (G[i].size() == 1);
isLeaf[i] = temp;
path -= isLeaf[i];