プログラミング第3

1限講義、2限演習なのに何で10分前に着いたんだろう。とりあえずレポート書きますね。以下、処理系定義という用語の使い方が怪しい気がしますが、先生のせいにしておきます。

  • 関係演算子の戻り値の真は処理系定義?

少なくとも最新のJISでは関係・論理演算子は0か1を返すことは確認したことがある。ただしK&R(これC89相当だっけ)とかは知らん。

  • 関数の引数の評価順序は処理系定義

これ絶対危ないと思う。最適化したいのは分かるけど。まあ副作用のある式を引数に書くような神経してるやつもどうかと思うが。

  • a++;と++a;は同じ(もちろんこれ単体の場合、的外れな指摘は自重してください)

ところがC++では…!?(ヒントというか答え:演算子オーバーロード)実は私はa++;派なのですが、スタイルに変更を迫られています。C++でもう1つ、コンストラクタでのイニシャライザの記述が()と{}の間にあるせいで、

int func() {
    //code
}

int func()
{
    //code
}

これのせい

Test::Test() :
    a(0),
    b(0),
    ....
{
    // code
}

先生はVerilog*1ユーザでもあってガンガン使う派だそうです。なんか?:は一切禁止派も結構あるような気もするけどね。実は第2・3項に文字列リテラルも書いちゃう派だったりする。

*1:ハードウェア記述言語の1つ