ページ 11

59章 セミコロン2個

Posted: 2009年3月11日(水) 08:42
by Ma
以前Mだった者ですが、名前が重なっていたため Ma と改名させていただきました。

Ob->ObChild.z = Ob->ToZ - Ob->Zhaba + Ob->Zhaba * s;;

今読んでいたところ、エラーは起きませんし些細なことですが
セミコロンが二つ並んでいましたので報告しておきます。

Re:59章 セミコロン2個

Posted: 2009年3月11日(水) 11:16
by 朽木
私も同じ経験があります。

コンパイラのソースを見たわけでは無いんですが、

いろんなサイトを調べてみると、コンパイラは';'までを1つの命令(?)と解釈するそうです。

というわけで、私が考えるに、例えば "a = a + b;;" は "a = a + b;" と ";" に分けられて、

コンパイラは次の様に見るんだと思います。多分。

/* "a = a + b;" の部分 */
'=' と '+' を見つける。

'+'の方が優先度が高いので a + b を吐く

次に a = 直前の結果 を吐く

おわり

/* ";" の部分 */
演算子や命令を探すが見つからない

おわり



あとから見て気づいたんですが、

これ、質問じゃなかったんですね・・・@@;;

Re:59章 セミコロン2個

Posted: 2009年3月11日(水) 11:29
by 御津凪
微妙に話がずれますが、朽木さんと同等の理由で、仮にセミコロンが、
x = 0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
と、沢山並んでもエラーではありません。
(中には警告やエラーと見なすものもあると思いますが)

ちなみに、
0;
と書いてもエラーにはなりません。
(こちらも警告やエラーと見なすものもあると思います)

豆知識としてどうぞ。

Re:59章 セミコロン2個

Posted: 2009年3月12日(木) 07:29
by SCI
;_:;
こんなのもエラーになりませんね。これもコンパイラによって警告等出るかも知れませんが。

Re:59章 セミコロン2個

Posted: 2009年3月12日(木) 08:04
by Dixq (管理人)
ご報告ありがとうございます。
修正しておきますね。

>>SCIさん

泣いてる顔文字みたいに見えますねw