以下の様なコードでも、エラーは出ません!
#include <iostream>
bool a()
{
std::cout << "Hello World!\n";
return true;
}
bool b()
{
std::cout << "Good Bye!\n";
return false;
}
bool c()
{
std::cout << "Dead!\n";
return false;
}
int main()
{
0; // 作用が無いため、コンパイラに無視される
int x = (0, 1, c(), 3, 4, 5); // x = 5 と同義(ただし、それ以外の作用が無い値は無視されるが、c()は呼び出される)
a(), b(), c(); // 左から順に処理される
do
{
std::cout << x << std::endl;
} while (a(), b(), c(), x--); // whileとしては x-- のみ評価されるが、それ以外の関数も左から順に評価される。
do
{
std::cout << "The End!" << std::endl;
} while (0,0); // フクロウの顔をコードに描きたいときにはこう書く!(右の0のみ評価され、左の0は無意味)
// C6319 テストされた式内でのコンマ演算子を使用すると、作用が存在しないときに左辺の引数が無視される原因となります
// これは、左の0 に作用が無いため、コンパイラに無視され、コード化されない可能性がある事を示す
}