2017年3月3日金曜日

コンマ演算子

古いデバッグ用のコードを見ていたら,こんなのがあった.
while (_ftprintf(stderr,_T("%s="),_T("入力してください")),_fgetts(buf,sizeof(buf),stdin) != NULL) { ... }

最近あまりこの様なコードを書くことがなく忘れていた.
while の条件式の括弧の中に複数の文.コンマで区切られている.
for ではインクリメントなどの変化式で使う.

MSDN コンマ演算子: ,
次の様にすると,i には c が代入されるらしい.
i = ( b , c ) ;
括弧がないと b .
i = b , c ;

MSDN コンマ演算子 (,) (JavaScript)
JavaScript でも同じ様な動作なら,今やっている所で使えそう.

while 部分を c++ で書き直し.
// while (std::terr << _T("入力してください=") , std::getline(std::tin,buf))
while (std::terr << _T("入力してください=") , std::tin.getline(&buf[0],buf.size()))
上の方法ではうまく取れなかった.