在写染色法判定二分图 这题时遇到的一些语法问题,在debug好久后发现问题竟然出现在这里!!!故有了这篇分享
C++不像python是严格缩进的,把所有代码写在同一行,合法
用分号和大括号隔开应该也是可以编译的
先学了python,没有系统学习c++语法的菜杯正是在下
这种写法↓
if (a)
if (b == 0) cout << "haha\n";
else cout << "a == " << a;
//注意else放在这里,并不是最上面的if(a)不满足才去执行a
//c ++ 不是严格缩进的,而是以分号来划分
//我脑中想象的编译器应该是从这个else开始向上匹配的第一个if——应该是if(b == 0)
//这个if不满足才会去执行else
//因此要否定最上面的if应该要加大括号
等价于这种写法
if (a)
if (b == 0) cout << "haha\n";
else cout << "a == " << a;
而并不是我们所想的这个else是否定第一个if的
如果要否定第一个if
应该写成如下
if (a)
{
if (b == 0) cout << "haha\n";
}
else cout << "a == " << a;
大佬tql,平时没注意这些细节
我通常是按
if(x){ xxxxx; if(x) xxxx; }else{ xxx; }
对的,所以说还是勤加大括号比较好,我被y化了,对于一行的分支不喜欢加括号了(手动狗头)