Ste*_*fan 1 c++ scanf comma-operator
不是我的代码,而是来自这里.在read_data()函数中有一个scanf,后面还有我之前看不到的东西.它有什么作用?是STL吗?
scanf("%d %d\n", &a, &b), G[a].pb(b), deg[b]++;
Run Code Online (Sandbox Code Playgroud)
这是逗号运算符的用法.逗号运算符非常罕见地使用,将一堆表达式作为单个表达式排列在一起.在这种情况下,声明
scanf("%d %d\n", &a, &b), G[a].pb(b), deg[b]++;
Run Code Online (Sandbox Code Playgroud)
意思是"做scanf,然后调用pb(b)上G[a],然后调用deg[b]++,以评估的结果deg[b]++.
我看到它在这种情况下使用:
for(i = 1; i <= M; i++)
scanf("%d %d\n", &a, &b), G[a].pb(b), deg[b]++;
Run Code Online (Sandbox Code Playgroud)
老实说,这让我觉得风格很差.写这个会更好:
for(i = 1; i <= M; i++) {
scanf("%d %d\n", &a, &b);
G[a].pb(b);
deg[b]++;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在功能上是等效的,并且更具可读性 - 您不必发布到Stack Overflow或了解C++语言的奇怪细节以弄清楚它的含义.:-)