2005年06月14日
川俣晶の縁側ソフトウェア技術雑記total 1908 count

目から鱗が落ちた! Cのラベル付き文という構文の定義!?

Written By: 川俣 晶連絡先

 これは、プログラム言語ミーハー限定の話題であることを前置きして書きますが。

 何気なく以下の文書を眺めていて、とても目から鱗が落ちる知識を得ました。

プログラム言語C

JIS X 3010:2003

(ISO/IEC 9899:1999)

 この中の以下の箇所です。

6.8.1 ラベル付き文

構文規則

ラベル付き文:

識別子: 文

case 定数式: 文

default : 文

 当たり前すぎてCの言語仕様書など見ていなかったのが敗因です。

 間抜けと言われても当然の当然のことです。

 しかし、これは面白すぎる!

 見ての通り、goto文で使うラベルの構文と、switch文で使うcaseとdefaultの構文が1つの「ラベル付き文」というカテゴリにまとめられています。

 その結果として、これらの構文で使う区切り記号がなぜ共通のコロン":"であるかが明らかになります。同じカテゴリの文なので、同じ記号を使うのが自然な流れということですね。

 昔は、何となく2つは別個のものだと思っていました。何せ、gotoで使うラベルの構文は、アセンブラでよくあるラベル名+":"という構文とそっくりだったので、そのようなものだと誤解していました。そして、もともとPascal系からCに移住した人だったので、caseもラベルに過ぎないという発想が希薄でした。あくまで制御構造の一部であると思っていました。しかし、Cのcaseとは、プログラムの実行の流れを中断しない存在であり、間違いなくラベルとしての性格を持ちます。

 というわけで、今頃になって、目から鱗が落ちました。

 いや~、言語仕様書を読むって楽しいですね!

Facebook

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20050614101359
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.34 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.