Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cとは? わかりやすく解説

c.

別表記:シー

「c.」の意味・「c.」とは

「c.」は、英語の略語であり、"circa"の頭文字取ったのである。"circa"はラテン語で、「おおよそ」や「約」を意味する。したがって、「c.」は、日時数量などを示す際に、「おおよそ」や「約」という意味を持つ。

「c.」の発音・読み方

「c.」の発音は、その原語である"circa"の頭文字取ったのであるため、「シー」と発音するIPA表記では「si:」、日本人発音するカタカナ英語では「シー」となる。発音によって意味や品詞が変わる単語はないため、特に注意する要はない。

「c.」の定義を英語で解説

「c.」は、"circa"の略であり、英語での定義は"approximately"または"about"となる。これらはいずれも「おおよそ」や「約」という意味を持つ。例えば、「c. 2000」は「約2000年」という意味になる。

「c.」の類語

「c.」の類語としては、「approx.」(approximatelyの略)や「abt.」(aboutの略)がある。これらも同様に、「おおよそ」や「約」という意味を持つ。

「c.」に関連する用語・表現

「c.」に関連する用語としては、「B.C.」(Before Christの略、紀元前)、「A.D.」(Anno Dominiの略、西暦)などがある。これらは日時を示す際によく用いられる表現である。

「c.」の例文

以下に「c.」を用いた例文10個示す。 1. The building was constructed c. 1900.(その建物は約1900年建設された。)
2. He was born c. 1980.(彼は約1980年生まれた。)
3. The population of this city is c. 1 million.(この都市人口は約100万人である。)
4. The company was established c. 2000.(その会社は約2000年設立された。)
5. The painting was created c. 17th century.(その絵画は約17世紀描かれた。)
6. The book was published c. 1950.(その本は約1950年出版された。)
7. The event took place c. 1800.(そのイベントは約1800年行われた。)
8. The artifact dates back to c. 500 B.C.(その遺物は約紀元前500年さかのぼる。)
9. The temperature is c. 30 degrees Celsius.(気温は約30度である。)
10. The distance is c. 100 kilometers.(その距離は約100キロメートルである。)

c

別表記:シー

「c」の意味・「c」とは

「c」は、英語アルファベット3番目の文字である。また、ローマ数字では「c」100を表す。科学的な文脈では、「c」光速を表す記号として広く認識されている。例えば、アルベルト・アインシュタイン特殊相対性理論では、光速「c」表される

「c」の発音・読み方

英語の「c」発音は、前後文字により異なる。一般的には「k」のように硬い音(キー)または「s」のような柔らかい音(シー)として発音される例えば、「cat」では「k」のように、「city」では「s」のように発音される

「c」の定義を英語で解説

"C" is the third letter in the English alphabet. In Roman numerals, "c" represents 100. In a scientific context, "c" is widely recognized as the symbol for the speed of light. For instance, in Albert Einstein's theory of special relativity, the speed of light is denoted by "c".

「c」の類語

「c」類語としては、アルファベットの他の文字考えられる例えば、「b」や「d」などは、「c」同じく子音を表す文字である。また、「c」100を表すローマ数字であるのに対し、「x」は10、「m」は1000を表す。

「c」に関連する用語・表現

「c」関連する用語としては、"century"(世紀100年)や"cent"(セント100分の1ドル)などがある。これらの単語は、「c」ローマ数字100を表すことに由来するまた、"speed of light"(光速)や"celsius"(摂氏)など、科学的な文脈でよく使われる「c」を含む表現もある。

「c」の例文

以下に、「c」用いた例文10個示す。 1. English sentence (Japanese translation): "The speed of light, denoted by 'c', is a fundamental constant in physics." (物理学において、'c'で表される光速基本的な定数である。) 2. English sentence (Japanese translation): "In Roman numerals, 'c' stands for 100." (ローマ数字では、'c'は100を表す。) 3. English sentence (Japanese translation): "The word 'cat' starts with the letter 'c'." (「catは文字 'c'で始まる。) 4. English sentence (Japanese translation): "The temperature is 20 degrees Celsius." (気温20摂氏である。) 5. English sentence (Japanese translation): "The symbol 'c' in E=mc^2 represents the speed of light." (E=mc^2の中の 'c'は光速を表す。) 6. English sentence (Japanese translation): "Vitamin C is essential for our health." (ビタミンC私たち健康にとって必要不可欠である。) 7. English sentence (Japanese translation): "The 'c' in 'circle' is pronounced as 's'." ('circle'の中の 'c'は 's'のように発音される。) 8. English sentence (Japanese translation): "The Roman numeral 'c' is used in the copyright symbol ©." (著作権記号©にはローマ数字の 'c'が使われている。) 9. English sentence (Japanese translation): "The 'c' in 'ice' is silent." ('ice'の中の 'c'は発音しない。) 10. English sentence (Japanese translation): "The 'c' in 'race' is pronounced as 's'." ('race'の中の 'c'は 's'のように発音される。)

シー‐シャープ【C♯】


シー‐プラス‐プラス【C++】


シー【C/c】

読み方:しー

英語のアルファベット第3字。

順序段階等級などの3番目。「—クラス

〈C〉《(スウェーデン)Celsiusセ氏温度を表す記号

〈C〉《carbon炭素元素記号

〈C〉ローマ数字100

〈C〉音楽の用語。

音名の一。ハ音

㋑4分の4拍子を表す記号

〈c〉《(フランス)centi-》数の単位センチ記号

cycle周波数単位サイクル記号

〈C〉《(フランス)coulomb電気量単位クーロン記号

10 〈©〉⇒丸(まる)シー

11c真空中の光速度を表す記号

12 〈C〉インフルエンザウイルスの型。

13 〈C〉《complement英文法などで、補語を示す符号。→S →V →O

14 〈C〉俗にセックスのこと。最初のAをキス二番目のBをペッティングとして、その次の段階ということから。


ツェー【(ドイツ)C/c】

読み方:つぇー

音楽音名の一。ハ音シー


AB(C)ロール 【AB(C)rolls】


アセチレンブラック

分子式C
その他の名称炭素動物性,植物性】、カーボンブラックエキストラクト、Carbon black extractCarbon、C、活性炭Activated carbon活性炭素、Graphitized carbon blackCarbon blackAcetylene blackせきぼく、Grapite、カーボンブラック、アセチレンブラック、黒鉛化カーボンブラック、Activeated carbonpowder】、活性炭粒状】、Activeated carbongranule】、活性炭粉末】、AST-120、クレメジン、Kremezin
体系名:炭素


ダイアモンド


システイン

同義/類義語:シスチン
英訳・(英)同義/類義語:Cys, cysteine, C , Cys , cysteien, cysteine

タンパク質を構成するアミノ酸一種で、残基部分SH基を持つためタンパク質分子中で立体構造保持活性部位として働くこともある。また、分泌タンパク質では2つSH基結合されてーS-S-結合作りタンパク質立体構造安定化に働く場合もある。略号Cys , C

シチジン

英訳・(英)同義/類義語:cytidine, C , Cyd, cytidine

ピリミジン塩基シトシンリボースがグリコシル結合してできたヌクレオシド

シトシン


補体

英訳・(英)同義/類義語:C, complement

血清中に存在するタンパク群で、抗体働き助けて標的細胞破壊することから補体とよばれる

C

C → シトシン (核酸)
C → システイン (アミノ酸)


シトシン

ピリミジン塩基であり、シトシンヌクレオチドの基本骨格

名前Cytosine
C

CC Attribution-Noncommercial-Share Alike 3.0 Unported
Bio Wikiの記事を複製・再配布した「分子生物学用語集」の内容は、特に明示されていない限り、次のライセンスに従います:
CC Attribution-Noncommercial-Share Alike 3.0 Unported


補体(Complement、略号=C)


読み方:しー

  1. 軍団のことをいふ。独語Die Corpディーコープ)の頭字を取つたものである。〔軍隊語〕

分類 軍隊

隠語大辞典は、明治以降の隠語解説文献や辞典、関係記事などをオリジナルのまま収録しているため、不適切な項目が含れていることもあります。ご了承くださいませ。 お問い合わせ

C

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/10/11 13:39 UTC 版)

Cc Cc
ラテン文字
Aa Bb Cc Dd    
Ee Ff Gg Hh    
Ii Jj Kk Ll Mm Nn
Oo Pp Qq Rr Ss Tt
Uu Vv Ww Xx Yy Zz
  • 太字で表した字は母音である。

Cは、ラテン文字アルファベット)の3番目の文字。小文字は cギリシア文字Γ(ガンマ)に由来し、キリル文字Гは同系である。

キリル文字のСは別字で、ラテン文字のSに相当する文字である。

字形

筆記体
ジュッターリーン体

大文字、小文字とも半円形ないし不完全な円である。

フラクトゥールでは

インドネシア風かき氷 es campur を売るジャカルタ市内の屋台。「エス・チャンプル」と発音する。

正書法

その他

(例) サンスクリット: candraḥ [チャンドラ] 「月」、アイヌ語: cise [チセ] 「家」

記号付き文字、多重音字などについて

  • 各種ダイアクリティカルマークの付いた c については、#関連項目を参照。
  • 二重音字としては、ゲルマン系の言語で ck [k] が広く定着しているほか、多くの言語で ch が様々に使われている。 後者については ch を参照のこと。
  • 国際音声記号で用いる ɔɕ については、それぞれの項目を参照。

Cの意味

学術的な記号・単位

  • を意味する数字。語源はラテン語で「百」を意味するcentum。ないしその派生語の略。
  • 十二を意味する数字。十六進法二十進法など、十三進法以上(参照: 位取り記数法#Nが十を超過)において十二(十進法の12)を一桁で表すために用いられる。
  • circa (c.)  通例、年代と共に用いて、およそ、約、...の頃の意。 「c.1162–1227」は、1162年頃生まれ・1227年没(正確)。
  • 炭素元素記号
  • 電荷の単位クーロンのシンボル。
  • 温度を示すセルシウス度(摂氏)で用いられる記号(℃)。
  • 数学では一般に既知の数、集合、行列等を示す、A, Bに次ぐ文字として用いられる。
  • 大文字太字の Cは、数学において複素数 (complex number) 全体の集合を表す。
  • 中心化群 CG(S)
  • 関数の滑らかさ Ck
  • 定数 (constant) を表す。特に積分定数を表す時は通例大文字。
  • nCm組合せ (combination) の総数。
  • 対称操作のひとつである回転を表現する記号。具体的な使用例は分子対称性を参照。
  • 実数連続体の基数
  • 光速度celeritas)を表す(小文字)。
  • 自然科学では熱容量電気容量capasity、大文字だが比熱容量を表す際は小文字)、濃度(concentration)、光度カンデラ:candela)を示す文字に用いる。電気容量を表すことから、回路素子のコンデンサ (condenser, capacitor) を表す際にも用いる
  • 加熱を示すときに用いられる場合がある。加熱を表すフランス語「Chauffage」の略。
  • トランジスタの端子の1つ。コレクタ (collector)
  • CPUコア(core)のこと。
  • C言語。プログラミング言語の1つ。ここから派生した言語であるC++と組み合わせてC/C++と表記されることもある。
  • 虫歯を表す。また C1 - C4 (CはCariesの頭文字。)でその進行度を表す。
  • 文法で、補語 (complement)、可算名詞 (countable) の略号。
  • 音楽で用いられる拍子の1つ、4 分の 4拍子の記号は大文字の C に似ているが、起源的に関係がない。
  • カラー印刷などで使われる基本色 YMC, YMCK の中のシアン (Cyan)。
  • 音楽で用いられる音名の1つ(英米式、ツェー(独式))。イタリア式で「do」(ド)、日本式では「」に相当。 → ハ (音名)
    • 音階の1番目の音であることから、日本の音楽・芸能関係者の間で1を表す隠語として使われる。例:C(ツェー)万=1万(円)
  • 写真印画紙の面種が光沢仕上げ (crystal) であることを意味する。対する絹目はS (silk) で示す。
  • 視力検査で用いられるランドルト環は、Cを基にしている。
  • ケッペンの気候区分温帯を表すC
  • マクロ経済学で、Cは消費 (consumption)を表す。また、cは限界消費性向を表す。

その他の記号

商品名・作品名

符号位置

大文字 Unicode JIS X 0213 文字参照 小文字 Unicode JIS X 0213 文字参照 備考
C U+0043 1-3-35 C
C
c U+0063 1-3-67 c
c
半角
U+FF23 1-3-35 C
C
U+FF43 1-3-67 c
c
全角
U+24B8 Ⓒ
Ⓒ
U+24D2 1-12-35 ⓒ
ⓒ
丸囲み
🄒 U+1F112 🄒
🄒
U+249E ⒞
⒞
括弧付き
𝐂 U+1D402 𝐂
𝐂
𝐜 U+1D41C 𝐜
𝐜
太字
𝐶 U+1D436 𝐶
𝐶
𝑐 U+1D450 𝑐
𝑐
イタリック体
𝑪 U+1D46A 𝑪
𝑪
𝒄 U+1D484 𝒄
𝒄
イタリック体太字
𝒞 U+1D49E 𝒞
𝒞
𝒸 U+1D4B8 𝒸
𝒸
筆記体
𝓒 U+1D4D2 𝓒
𝓒
𝓬 U+1D4EC 𝓬
𝓬
筆記体太字
U+212D ℭ
ℭ
𝔠 U+1D520 𝔠
𝔠
フラクトゥール
U+2102 ℂ
ℂ
𝕔 U+1D554 𝕔
𝕔
黒板太字
𝕮 U+1D56E 𝕮
𝕮
𝖈 U+1D588 𝖈
𝖈
フラクトゥール太字
𝖢 U+1D5A2 𝖢
𝖢
𝖼 U+1D5BC 𝖼
𝖼
サンセリフ
𝗖 U+1D5D6 𝗖
𝗖
𝗰 U+1D5F0 𝗰
𝗰
サンセリフ太字
𝘊 U+1D60A 𝘊
𝘊
𝘤 U+1D624 𝘤
𝘤
サンセリフイタリック
𝘾 U+1D63E 𝘾
𝘾
𝙘 U+1D658 𝙘
𝙘
サンセリフイタリック太字
𝙲 U+1D672 𝙲
𝙲
𝚌 U+1D68C 𝚌
𝚌
等幅フォント
U+216D 1-3-35 Ⅽ
Ⅽ
U+217D 1-3-67 ⅽ
ⅽ
ローマ数字100
記号 Unicode JIS X 0213 文字参照 名称
U+1D04 ᴄ
ᴄ
LATIN LETTER SMALL CAPITAL C
U+1D9C ᶜ
ᶜ
MODIFIER LETTER SMALL C
🄲 U+1F132 🄲
🄲
SQUARED LATIN CAPITAL LETTER C
🅒 U+1F152 🅒
🅒
NEGATIVE CIRCLED LATIN CAPITAL LETTER C
🅲 U+1F172 🅲
🅲
NEGATIVE SQUARED LATIN CAPITAL LETTER C
🄫 U+1F12B 🄫
🄫
CIRCLED ITALIC LATIN CAPITAL LETTER C

他の表現法

脚注

  1. ^ ギリシア文字のΓは元々様々な角度で書かれていた。
  2. ^ ただし、G が発明されるより前の最初期のラテン語では、[k · g] の両音兼用だった。
  3. ^ オランダ語も同様。ただしラテン語やフランス語由来の語彙自体が英語よりはずっと少ない。
  4. ^ a b c フランス語・英語以外では cy の組み合わせは稀。
  5. ^ ただし cl の組み合わせは言語によって変形を被っていることが多い。例: ラテン語: clavis 「鍵」 [クラウィス] > フランス語: clé [クレ] / イタリア語: chiave [キァーヴェ] / スペイン語: llave [リャベ] / ポルトガル語: chave [シャヴィ]
  6. ^ フランス語では無音の場合もある。 (例) blanc [ブラン] 「白い」。
  7. ^ ドイツ語ではラテン語の æä に置き換える。
  8. ^ 正確には、a · o · ô · u · ơ · ư · ă · â の前。
  9. ^ 正確には音節末では若干違った音になる。

関連項目


C++

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/11/14 13:53 UTC 版)

C++
C++のロゴ
パラダイム 手続き型プログラミングデータ抽象化オブジェクト指向プログラミングジェネリックプログラミング[1]
登場時期 1983年 (41年前) (1983)
開発者 ビャーネ・ストロヴストルップ 
最新リリース ISO/IEC 14882:2024/ 2024年10月19日 (26日前) (2024-10-19)
評価版リリース ISO/IEC 14882:2026 (予定) / 2024年10月16日 (29日前) (2024-10-16)
型付け nominative, 安全でない強い静的型付け
主な処理系 GCCClangMicrosoft Visual C++Intel C++ CompilerC++ Builder
影響を受けた言語 C言語Simula、ALGOL 68、CLUMLAda 
影響を与えた言語 JavaRustC#C++/CLID言語PHP
ウェブサイト isocpp.org
拡張子 .C、 .cc、 .cpp、 .cxx、 .c++、 .h
テンプレートを表示

C++シープラスプラス)は、汎用プログラミング言語のひとつである。派生元であるC言語の機能や特徴を継承しつつ、表現力と効率性の向上のために、手続き型プログラミングデータ抽象オブジェクト指向プログラミングジェネリックプログラミングといった複数のプログラミングパラダイムが組み合わされている[1]。C言語のようにハードウェアを直接扱うような下位層向けの低水準言語としても、複雑なアプリケーションソフトウェアを開発するための上位層向け高水準言語としても使用可能である。アセンブリ言語以外の低水準言語を必要としないこと、使わない機能に時間的・空間的コストを必要としないことが、言語設計の重要な原則となっている[2][3]

C++は、1983年にAT&Tベル研究所の計算機科学者ビャーネ・ストロヴストルップによって公開された。また様々なプラットフォームでその開発環境が導入された。1998年からISOIECの共同で言語仕様とテンプレートライブラリの標準化が行われるようになり、その後2003年、2011年、2014年、2017年、2020年に標準規格が改訂されている。2021年時点での最新規格は「ISO/IEC 14882:2020」通称「C++20」である。

歴史

ストロヴストルップはプログラミング言語C with Classes(クラス付きのC言語)の開発を1979年に開始した。彼は大規模なソフトウェアの開発に有用な特徴をSimulaが備えていることに気がついたが、Simulaは実行速度が遅く実用的ではなかった。一方でBCPLは実行速度こそ速かったものの、大規模なソフトウェア開発を念頭に置いた場合にあまりにも低級だった。

これらの事情を鑑みて、ストロヴストルップは当時既に汎用的な言語だったC言語にSimulaの特徴を取り入れることを試みた。この取り組みにあたってはALGOL68AdaCLUML等の言語の影響も受けている。最初はクラスと派生クラス、型検査機構の強化、インライン関数、デフォルト引数の機能を、Cfrontを介してC言語に追加した。1985年10月に最初の商用リリースがなされた[4]

1983年にはC with ClassesからC++に名称を変更した。この際に、仮想関数と、関数と演算子の多重定義参照型、const型、ユーザー制御可能な自由領域メモリ制御、型検査機構の改良、BCPL形式の(「//」による)行単位のコメントなどの機能が追加された。1985年には『The C++ Programming Language』の初版が出版された(邦訳『プログラミング言語C++』1988年))。この時点では公式な標準が策定されていなかったために、この本が事実上のリファレンスとなった。1989年C++のバージョン2.0として、多重継承抽象クラス、静的メンバ関数constメンバ関数、protectedメンバ等の機能が追加されたものがリリースされた。1990年に『The Annotated C++ Reference Manual (ARM)』[5](邦訳『注解C++リファレンスマニュアル』[6])が出版され、将来の標準化の土台となるものを提供した。後に追加された機能にはテンプレート例外処理名前空間、新形式のキャストブール型が含まれた。

ARMが事実上の標準として使われた時代が続いたが、標準化が進んだ。C++言語の最初の標準は1998年にISO/IEC 14882:1998として承認された。2003年の改訂版を経て、2011年にメジャーアップデートとして制定されたのがISO/IEC 14882:2011、通称「C++11」である。このバージョンは、元々、非公式に「C++0x」と呼ばれていた。2000年代中に制定され、正式に「C++09」と呼称されることを見越した仮称だったが、2000年代中には実現しなかった。2011年8月10日まで続いた最終国際投票で C++0x は全会一致で承認された。これにより C++0x と呼ばれてきた C++ の次期改正案はついに国際標準になり、C++11と呼べるようになった。また、2014年にはISO/IEC 14882:2014、通称「C++14」が策定された。2017年にはISO/IEC 14882:2017、通称「C++17」が策定された。2020年にはISO/IEC 14882:2020、通称「C++20」が策定された。

C++言語の進化に伴い、標準ライブラリもまた進化していった。C++標準ライブラリに最初に追加されたのは、従来のC言語の printf()scanf() といった関数を置き換えるストリームI/Oライブラリである。また、C++98における標準ライブラリへの追加で最も重要なものはStandard Template Library (STL) である。C++11では、正規表現による検索・置換や複数スレッドでの同時実行、ハッシュテーブル・ハッシュセットの追加などさらなる拡充が続いている。

国際規格

規格出版日 C++ 国際規格 非公式名称 対応する日本工業規格
1998年9月1日 ISO/IEC 14882:1998[7] C++98
2003年10月16日 ISO/IEC 14882:2003[8] C++03 JIS X 3014:2003
2007年11月15日 ISO/IEC TR 19768:2007[9] C++TR1
2011年9月1日 ISO/IEC 14882:2011[10] C++11
2014年12月15日 ISO/IEC 14882:2014[11] C++14
2017年12月 ISO/IEC 14882:2017[12] C++17
2020年12月15日 ISO/IEC 14882:2020[13] C++20

長年にわたる作業の後、ANSIとISOの合同委員会はプログラミング言語C++を1998年に標準化した (ISO/IEC 14882:1998)。1998年の標準の公式なリリースから数年間にわたって委員会は不具合の報告を続け、2003年に改訂版を出版した。2003年12月に制定された日本工業規格(現:日本産業規格JIS X 3014:2003「プログラム言語C++」日本産業標準調査会経済産業省)は、ISO/IEC 14882:2003 (E) の日本語訳である。

2007年11月15日、C++ Technical Report 1 (TR1) という技術報告書(テクニカルレポート)がリリースされた。これは規格の公式な一部ではなかったが、次の版のC++に含まれると期待される、標準ライブラリへの数多くの拡張を与えた。TR1の内容は、多少の修正を加えてC++11に取り込まれている。

2011年9月1日、C++98以来初の大きな改訂となるISO/IEC 14882:2011が発行された。

2014年8月18日、ISO/IEC 14882:2014 (C++14) が投票で承認され[14]、同年12月15日に公式に出版された。

2017年12月1日、ISO/IEC 14882:2017 (C++17) が公式に発行された。

2020年9月4日、ISO/IEC 14882:2020 (C++20) が投票で承認され[15][16]、同年12月15日、ISO/IEC 14882:2020 (C++20)に公式に出版された[17]

C++20に続いて次期改訂版となるべきISO/IEC 14882:2023 (C++23) [18]の仕様策定については、2019年末から始まったCovid-19世界的流行により開発者同士の対面によるミーティングの開催を図ることが大変難しくなったことから[19][20][21]、仕様策定が非常に難航している状況である。

将来

C++に対しては、今もなお要望が絶えない。特にBoost C++ライブラリを開発しているBoostコミュニティはC++の方向性の決定に大きく貢献し、さらにC++標準化委員会へ改良すべき点などを意見している。現在はマルチパラダイムプログラミングをより自然に行えるようにすることに力が注がれており、たとえばBoostでは、C++の関数型プログラミングメタプログラミングの可能性を模索している。

C++11と呼ばれている新しいバージョンのC++標準ではこれらの一部が取り込まれ、今後のC++でもさらなる追加が行われると見られている。

C++という名称

この名称はRick Mascittiの功績で、最初に使用されたのは1983年の12月である。初期の研究期間では、開発中の言語は「C with Classes」と呼ばれていた。最終名は、変数の値を一つ加算する、C言語の++インクリメント)演算子からの派生である。また一般的な命名規則での「+」の使用は、機能強化されたコンピュータプログラムを意味する。ストロヴストルップによれば「この名前は、C言語からの変更の革新的な本質を示している」ということである。C+は、より初期の無関係なプログラミング言語の名前である。

ストロヴストルップは著書『The C++ Programming Language』の前文で名前の起源を語り、ジョージ・オーウェルの小説『1984年』の付録から「C++」が連想されるかもしれないと付け加えている。ニュースピークという架空の言語の解説に宛てられた3つの章の中に、科学技術に関する専門用語とジャーゴンの解説に宛てられた「C vocabulary」という章がある。ニュースピークで「ダブルプラス」は最上級の修飾語である。ゆえにニュースピークで「C++」は「最も極端な専門用語またはジャーゴン」という意味になるだろう。

1992年、Rick Mascittiは名前について非公式に質問されると、彼はおふざけのつもりで命名したという旨の回答をした。彼はこの言語の正式な名称になるとは夢にも思っていなかった。

哲学

ビャーネ・ストロヴストルップは著書『C++の設計と進化(1994)』でC++を設計する際に用いたルールを述べている。

  • C++はCと同等の実行効率と移植性を持つ静的に型付けされた汎用言語である。
  • C++は直接的かつ包括的に複数のプログラミングスタイル(手続き型プログラミング抽象化オブジェクト指向ジェネリックプログラミング)をサポートする。
  • C++はもしプログラマが間違っている可能性があったとしてもプログラマに選択の余地を与える。
  • C++は可能な限りC言語との互換性を持ち、C言語からスムーズに移行できる。
  • C++はプラットフォームに固有な機能や汎用的でない機能の実装を避ける。
  • C++は利用しない機能についてはオーバーヘッドが生じない(ゼロオーバーヘッドの原則)。
  • C++は高級な実行環境を必要としない。

C++のコンパイラがどのようにコードを出力しメモリのレイアウトを決めるのかということについては『Inside the C++ Object Model』(Lippman, 1996)に記載されている。ただしコンパイラが出力するコードの仕様はコンパイラ制作者の裁量に任されている。

標準ライブラリ

1998年に施行されたANSI/ISO C++ 規格は言語仕様とライブラリの2つのパートで構成される。ライブラリ規格の大半はStandard Template Library (STL) とC言語の標準ライブラリの改良版についての内容である。標準規格以外にも様々なライブラリが数多く存在し、リンカを使用することにより、C言語/FORTRAN/Pascal/BASICのような言語を用いて作成されたライブラリを利用できる。規格外のライブラリが利用できるかどうかはコンパイラに依存する。

C++標準ライブラリはC++向けに若干の最適化が施されたC言語標準ライブラリを含んでいる。C++標準ライブラリの大部分はSTLである。 コンテナ可変長配列リストなど)、コンテナを配列のように扱えるようにするイテレータ、検索やソートを行うアルゴリズムといった有用なツールが提供されている。さらにmapmultimapのような連想配列や、setmultisetのようなソート済みコンテナも提供され、これらは全てインターフェイスに互換性がある。テンプレートを用いることにより、あらゆるコンテナ(またはイテレータで定義したシーケンス)に適用できる汎用的なアルゴリズムを記述できる。C言語と同様にライブラリの機能には#include ディレクティブを使ってヘッダファイルを読み込むことによってアクセスする。C++には69本の標準ヘッダファイルがあるが、このうち19本については非推奨となっている。

STLは標準規格に採用される前は、ヒューレット・パッカードの(一時はシリコングラフィックスの)商用ライブラリだった。STLは標準規格の単なる一部分に過ぎず規格書にSTLという表記は見られないが、入出力ストリーム、国際化、デバッグ機能、およびC言語標準ライブラリ等の、STL以外の部分と区別するために、今でも多くの人がSTLという用語を使っている。

大半のC++コンパイラはSTLを含むC++標準ライブラリの実装を提供している。STLPortのようなコンパイラ非依存のSTLも存在する。様々な目的でC++標準ライブラリを独自に実装しているプロジェクトは他にもある。

C++の標準ライブラリは大きく次のように分けられる。多種多様な実行環境が存在することを考慮して、GUIに関するライブラリは標準に含まれていない。

外部ライブラリ

以下に、C++で広く使われていると思われる[独自研究?]ライブラリを挙げる。

Boost C++ライブラリ
様々なC++汎用ライブラリの集合。正規表現を扱うBoost.Regexや無名関数ラムダ計算)を簡潔に記述できるBoost Lambda Libraryなどがある。C++11やC++14などでも、Boostに存在するライブラリが標準ライブラリに採用されたり、標準ライブラリとして提案された項目がBoostで先行して実装されたりしている。これにより、実際に実装・使用することでの知見が得られ、標準ライブラリとして採用される際に活かされている。
Apache Xerces
C++での主要XMLパーサの一つ。Java版も存在する。
CppUnit
C++でのユニットテストフレームワーク。 クラス毎の動作確認に威力を発揮する。

特徴

C言語に、オブジェクト指向プログラミングをはじめとする様々なプログラミングパラダイムをサポートするための改良が加えられたものといえる。ただし、他のプログラミング言語と違い、旧来のCと同様に手続き型言語としても扱えるという特徴がある。また、C言語と比べて型チェックが厳しくなっており、型安全性が向上している。このことから、C++をbetter Cというふうに呼ぶことがある。すなわち、基本的にC言語に対して上位互換性がある。初期のC++はCへのトランスレータとして実装され、C++プログラムを一旦Cプログラムに変換してからコンパイルしていた。

ただし、C++という名称が定まった当初の時期から、C言語とC++との間には厳密な互換性はない[22][23]。当時、Cとの互換性について議論の末、「C++とANSI Cの間には不正当な非互換性はない」という合意が形成されることとなった。そのため、正当な非互換性を巡って多くの議論が発生した[24]。ただし、まだANSIによるC言語の標準規格も策定途中の時期である。

その後、先祖であるC言語のANSIによる標準規格制定時には、関数のプロトタイプ宣言やconst修飾など、C++の機能がC言語に取り入れられることにもなった。C99の出現により、//コメントなどのC++で使われていた便利な機能が加わってCとC++の互換性が高まる一方、別々に審議し、別の時期に発行していることと、開発対象が必ずしも同じでないために利害関係者が異なることによる違いもある[要出典]

C++はCにクラスのサポートを追加しただけでなく、さらに次のような多種多様な機能を持っており、言語仕様は大変複雑である。言語処理系すなわちコンパイラの実装も、Cなどと比べて難易度が非常に高い。

ここから、よりオブジェクト指向を強化し、「なんでもあり」ではない代わりにシンプルで分かりやすくスマートな設計を目指した新たな言語(JavaD言語など)が作られることとなった。

Hello, World!

C++はC言語およびそのプリプロセッサの構文をほぼ継承している。以下のサンプルはビャーネ・ストロヴストルップの書籍「The C++ Programming Language, 4th Edition」(ISBN 978-0321563842) の「2.2.1 Hello, World!」に記載されている標準C++ライブラリのストリーム機能を用いて標準出力に出力するHello worldプログラムである[25][※ 1]

#include <iostream>

int main()
{
    std::cout << "Hello, World!\n";
}

書籍でも明記されているが、main()関数で意図的に返り値を返さない手法が使用されている。

演算子と演算子のオーバーロード

C++には、四則演算、ビット演算、論理演算、比較演算、メンバーアクセスなどの30を超える演算子がある[26]。メンバーアクセス演算子 (..*) のような一部の例外はあるが、大半の演算子はユーザー定義によるオーバーロードが可能である。オーバーロード可能な演算子が豊富に揃えられているため、C++を一種のドメイン固有言語として利用できる。またオーバーロード可能な演算子はスマートポインタ関数オブジェクトのような組み込み型の機能を模倣したユーザー定義クラスの実装や、テンプレートメタプログラミングのような先進的な実装テクニックに欠かせないものとなっている。演算子をオーバーロードしても演算の優先順位は変化せず、また演算子のオペランドの数も変化しない。ただし指定したオペランドが無視される可能性はある。

テンプレート

C++には、ジェネリックプログラミングを実現する機能としてテンプレートが存在する。テンプレートにできる対象は、関数とクラスである。C++14以降では変数もテンプレートの対象となった。テンプレートはコード中の型および定数をパラメータ化できる。テンプレートのパラメータ(テンプレート仮引数)に、型、コンパイル時定数またはその他のテンプレート(テンプレート実引数)を与えることで、テンプレートはコンパイル時にインスタンス化(実体化・具現化などとも)される。コンパイラは関数やクラスをインスタンス化するために、テンプレート仮引数をテンプレート実引数に置き換える。テンプレートはジェネリックプログラミングテンプレートメタプログラミング、コード最適化などのために利用される強力なツールであるが、一定のコストを伴う。各テンプレートのインスタンスはテンプレート仮引数毎にテンプレートコードのコピーを生成するためコードサイズが肥大化する。これはコンパイル時に実型引数の情報を削除することで単一の型インスタンスを生成するランタイム型のジェネリクスを実装したJavaなどの言語とは対照的である。なお、C# (.NET Framework) は実行時コンパイラにより実型引数の情報を削除することなく複数の型インスタンスを生成する方式を採用しており、C++とJavaの中間的なアプローチとなっている。

テンプレートとプリプロセッサマクロはいずれもコンパイル時に処理される言語機能であり、静的な条件に基づいたコンパイルが行われるが、テンプレートは字句の置き換えに限定されない。テンプレートはC++の構文と型を解析し、厳密な型チェックに基づいた高度なプログラムの流れの制御ができる。マクロは条件コンパイルに利用できるが、新しい型の生成、再帰的定義、型の評価などは行えないため、コンパイル前のテキストの置き換えや追加・削除といった用途に限定される。つまりマクロは事前に定義されたシンボルに基づいてコンパイルの流れを制御できるものの、テンプレートとは異なり独立して新しいシンボルを生成することはできない。テンプレートは静的な多態(下記参照)とジェネリックプログラミングのためのツールである。

C++のテンプレートはコンパイル時におけるチューリング完全なメカニズムである。これはテンプレートメタプログラミングを用いて実行する前にコンピュータが計算可能なあらゆる処理を表現できることを意味している。

概略すれば、テンプレートはコードの記述に本来必要な型や定数を明確にすることなく抽象的な記述ができる、パラメータ化された関数またはクラスである。テンプレート仮引数に実引数を与えてインスタンス化した結果は、テンプレート仮引数に指定した型に特化した形で記述されたコードと全く等価になる。これによりテンプレートは、汎用的かつおおまかに記述された関数およびクラス(テンプレート)と、特定の型に特化した実装(インスタンス化されたテンプレート)の依存関係を解消し、パフォーマンスを犠牲にすることなく抽象化できる手段を提供する。

オブジェクト

C++はC言語オブジェクト指向プログラミングをサポートするための改良を加えたものといえる。C++のクラスには、オブジェクト指向言語で一般的な抽象化カプセル化継承多態の4つの機能がある。オブジェクトは実行時に生成されるクラスの実体である。クラスは実行時に生成される様々なオブジェクトのひな形と考えることができる。

なお、C++はSmalltalkなどに見られるメッセージ転送の概念によるオブジェクト指向を採用していない。

カプセル化

カプセル化とは、データ構造を保証し、演算子が意図したとおりに動作し、クラスの利用者が直感的に使い方を理解できるようにするためにデータを隠蔽することである。クラスや関数はC++の基礎的なカプセル化のメカニズムである。クラスのメンバはpublicprotectedprivateのいずれかとして宣言され明示的にカプセル化できる。publicなメンバはどの関数からでもアクセスできる。privateなメンバはクラスのメンバ関数から、またはクラスが明示的にアクセス権を与えたフレンド関数からアクセスできる。protectedなメンバはクラスのメンバおよびフレンド関数に加えてその派生クラスのメンバからもアクセスできる。

オブジェクト指向では原則としてクラスのメンバ変数にアクセスする全ての関数はクラスの中にカプセル化されなければならない。C++ではメンバ関数およびフレンド関数によりこれをサポートするが、強制はされない。プログラマはメンバ変数の一部または全体をpublicとして定義でき、型とは無関係な変数をpublicな要素として定義できる。このことからC++はオブジェクト指向だけでなく、モジュール化のような機能分割のパラダイムもサポートしているといえる。

一般的には、全てのデータprivateまたはprotectedにして、クラスのユーザに必要最小限の関数のみをpublicとして公開することがよい習慣であると考えられている。このようにしてデータの実装の詳細を隠蔽することにより、設計者はインターフェイスを変更することなく後日実装を根本から変更できる[27] [28]

継承

継承を使うと他のクラスの資産を流用できる。基底クラスからの継承はpublicprotectedprivateのいずれかとして宣言する。このアクセス指定子により、派生クラスや全く無関係なクラスが基底クラスのpublicおよびprotectedメンバにアクセスできるかどうかを決定できる。普通はpublic継承のみがいわゆる派生に対応する。残りの二つの継承方法はあまり利用されない。アクセス指定子を省略した場合、構造体public継承になるのに対し、クラスではprivate継承になる。基底クラスをvirtualとして宣言することもできる。これは仮想継承と呼ばれる。仮想継承は基底クラスのオブジェクトが一つだけ存在することを保証するものであり、多重継承の曖昧さの問題を避けることができる。

多重継承はC++の中でもしばしば問題になる機能である。多重継承では複数の基底クラスから一つのクラスを派生できる。これにより継承関係が複雑になる。例えばFlyingCatクラスはCatクラスとFlyingMammalクラスから派生できる。JavaC#では、基底クラスの数を一つに制限する一方で、複数のインターフェイスを実装でき、これにより制約はあるものの多重継承に近い機能を実現できる(実装の多重継承ではなく型の多重継承)。インターフェイスはクラスと異なり抽象メソッド(純粋仮想関数)を宣言できるのみであり、関数の実装やフィールド(メンバ変数)は定義できない。JavaとC#のインターフェイスは、C++の抽象基底クラスと呼ばれる純粋仮想関数宣言のみを持つクラスに相当する。JavaやC#の継承モデルを好むプログラマは、C++において実装の多重継承は使わず、実装の継承は単一継承に絞り、抽象基底クラスによる型の多重継承のみを使うポリシーを採用することもできる。

多態

多態 (ポリモーフィズム) は様々な場面で多用されている機能である。多態により、状況や文脈に応じてオブジェクトに異なる振る舞いをさせることができる。逆に言うと、オブジェクト自身が振る舞いを決定することができる。

C++は静的な多態動的な多態の両方をサポートする。コンパイル時に解決される静的な多態は柔軟性に劣るもののパフォーマンス面で有利である。一方、実行時に解決される動的な多態は柔軟性に優れているもののパフォーマンス面で不利である。

静的な多態

関数のオーバーロードは名称が同じ複数の関数を宣言できる機能である。ただし引数は異なっていなければならない。個々の関数は引数の数や型の順序で区別される。同名の関数はコードの文脈によってどの関数が呼ばれるのかが決まる。関数の戻り値の型で区別することはできない。

関数を宣言する際にプログラマはデフォルト引数を指定できる。関数を呼び出すときに引数を省略した場合はデフォルト引数が適用される。関数を呼び出すときに宣言よりも引数の数が少ない場合は、左から右の順で引数の型が比較され、後半部分にデフォルト引数が適用される。たいていの場合は一つの関数にデフォルト引数を指定するよりも、引数の数が異なる関数をオーバーロードする方が望ましい。

C++のテンプレートでは、より洗練された汎用的な多態を実現できる。特にCuriously Recurring Template Patternにより仮想関数のオーバーライドをシミュレートした静的な多態を実装できる。C++のテンプレートは型安全かつチューリング完全であるため、テンプレートメタプログラミングによりコンパイラに条件文を再帰的に解決させて実行コードを生成させることにも利用できる。

動的な多態

派生

基底クラスへのポインタおよび参照は、正確に型が一致するオブジェクトだけでなく、その派生クラスのオブジェクトを指すことができる(リスコフの置換原則)。これにより、複数の異なる派生型を、同一の基底型で統一的に扱うことが可能となる。また、基底型へのポインタの配列やコンテナは、複数の異なる派生型へのポインタを保持できる。派生オブジェクトから基底オブジェクトへの変換(アップキャスト)では、リスコフの置換原則により、明示的なキャストは必要ない。

dynamic_castは基底オブジェクトから派生オブジェクトへの変換(ダウンキャスト)を実行時に安全に行うための演算子である。この機能は実行時型情報 (RTTI) に依存している。あるオブジェクトが特定の派生型のオブジェクトであることがあらかじめ分かっている場合はstatic_cast演算子でキャストすることもできる。static_castは純粋にコンパイル時に解決されるため動作が速く、またRTTIを必要としない。また、static_castは従来のC言語形式のキャスト構文と違い継承階層のナビゲーションをサポートするため、多重継承した場合もメモリレイアウトを考慮したダウンキャストを実行することができる。ただし、static_castでは多重継承において継承関係を持たない基底型同士のキャスト(クロスキャスト)を実行することはできず、dynamic_castを用いる必要がある。とはいえ、ダウンキャストやクロスキャストが必要となる場合、通例そのプログラムの設計に問題があることが多く、本来は仮想関数のオーバーライドによる多態を用いるべきである。

仮想関数

クラスのメンバー関数をvirtualキーワードで修飾することにより、派生クラスでオーバーライド(再定義)することが可能な仮想関数 (virtual function) となる。仮想関数は「メソッド」と呼ばれることもある[29]。派生クラスにて、基底クラスの仮想関数と名前および引数の数や型の順序が同じ関数を定義することでオーバーライドする(C++11以降では、overrideキーワードにより修飾することでオーバーライドを明示することもできる)。基底クラスの仮想関数を派生クラスでオーバーライドした場合、実際に呼び出される関数はオブジェクトの型によって決定される。基底クラスのポインタのみが与えられた場合、コンパイラはオブジェクトの型をコンパイル時に特定できず正しい関数を呼び出せないため、実行時にこれを特定する。これをダイナミックディスパッチと呼ぶ。仮想関数により、オブジェクトに割り当てられた実際の型に従って、最上位の派生クラスで実装した関数が呼び出される。一般的なC++コンパイラは仮想関数テーブルを用いる。オブジェクトの型が判明している場合はスコープ解決演算子を利用して仮想関数テーブルを使わないようにバイパスすることもできるが、一般的には実行時に仮想関数の呼び出しを解決するのが普通である。

通常のメンバー関数に加え、オーバーロードした演算子やデストラクタも仮想関数にできる。原則的にはクラスが仮想関数を持つ場合はデストラクタも仮想関数にすべきである。コンストラクタやその延長線上にあるコピーコンストラクタはコンパイルされた時点でオブジェクトの型が確定しないため仮想関数にできない。しかし、派生オブジェクトへのポインタが基底オブジェクトへのポインタとして渡された場合に、そのオブジェクトのコピーを作らなければならない場合は問題が生じる。このような場合はclone()関数(またはそれに準じる物)を仮想関数として作成するのが一般的な解決方法である。clone()は派生クラスのコピーを生成して返す。

= 0をメンバー関数宣言の末尾セミコロンの直前に挿入することにより、メンバー関数を純粋仮想関数 (pure virtual function) にできる。純粋仮想関数を持つクラスは純粋仮想クラスと呼ばれ、このクラスからオブジェクトを生成することはできない。このような純粋仮想クラスは基底クラスとしてのみ利用できる。派生クラスは純粋仮称関数を継承するため、派生クラスのオブジェクトを生成したい場合は全ての純粋仮想関数をオーバーライドして実装しなければならない。純粋仮想関数を持つクラスのオブジェクトを生成しようと試みるようなプログラムは行儀が悪い。

テンプレート

型消去 (type erasure) と呼ばれる、テンプレートを活用して動的な(プログラム実行時の)多態性を実現する手法が存在する。この手法はC++の標準ライブラリでもstd::functionstd::shared_ptrの削除子で採用されている。いずれも、コンストラクタや代入演算子で(一定の条件を満たす)任意のオブジェクトを実引数として渡せるようにすることから多態性を実現している。

単一行コメント

C99の制定前、C言語とC++との分かりやすい差異として、// で始まり改行で終わる、単一行コメントの有無があった。

単一行コメントはもともと、C言語の祖先にあたるBCPLに含まれていた仕様である。現在のC++のコンパイラの多くがC言語のコンパイラとしても使えるようになっているのと同様に、C言語が生まれて間もない頃は、C言語に加えB言語やBCPLのコンパイルができるコンパイラが用いられていた。それらコンパイラは、C言語のソースであってもBCPLと同様に単一行コメントが使用できるよう独自の拡張がなされていたため、BCPLの単一行コメントに慣れ親しんでいたプログラマ達は、C言語でも単一行コメントを使い続けた。その慣習がC++の誕生時まで生き残っていたため、C++では単一行コメントを「復活」させることになった。[独自研究?]

そのためもあって、C言語での仕様外の単一行コメントの使用は半ば常習と化し、[独自研究?]C99によって単一行コメントが正式に規格として組み入れられた。

C++ソースコードの処理とパーサ

LALR(1)のような旧式のパースアルゴリズムを用いてC++のパーサを記述することは比較的難しい[30]。その理由の一つはC++の文法がLALRではないことである。このため、コード分析ツールや、高度な修正を行うツール(リファクタリングツールなど)は非常に少ない。この問題を取り扱う方法としてLALR(1)でパースできるように改良されたC++の亜種(SPECS)を利用する方法がある。GLRパーサのようにより強力でシンプルなパーサもあるが処理が遅い。

パースはC++を処理するツールを作成する際の最も難しい問題ではない。このようなツールはコンパイラと同じように識別子の意味を理解しなければならない。従ってC++を処理する実用的なシステムはソースコードをパースするだけでなく、各識別子の定義を正確に適用し(つまりC++の複雑なスコープのルールを正確に取り扱い)、型を正しく特定できなければならない。

いずれにせよC++ソースコード処理ツールが実用的であるためには、GNU GCCVisual C++で使われているような、様々なC++の方言を取り扱えなければならず、適切な分析処理やソース変換やソース出力などが実装できなければならない。GLRのような先進的なパースアルゴリズムとシンボルテーブルを組み合わせてソースコードを変換する方法を利用すればあらゆるC++ツールを開発できる。

互換性

その言語文法の複雑さゆえ、C++規格に準拠したコンパイラを開発するのは一般的に難しい。20世紀末から何年にも渡りC++に部分的に準拠した様々なコンパイラが作られ、テンプレートの部分特殊化などの部分で実装にばらつきがあった。中でも、テンプレートの宣言と実装を分離できるようにするためのexportは問題のキーワードの一つだった。exportを定義したC++98規格がリリースされてから5年後の2003年前半にComeau C/C++が初めてexportを実装した。2004年にBorland C++ Builder Xexportを実装した。これらのコンパイラはいずれもEDGフロントエンドをベースにしていた。大半のコンパイラで実装されていないexportは多くのC++関連書籍(例えば"Beginning ANSI C++", Ivor Horton著)にサンプルが記されているが、exportが記載されていることによる問題は特に指摘されていない。GCCをはじめとするその他のコンパイラでは全くサポートしていない。Herb SutterはC++の標準規格からexportを削除することを推奨していたが[31]、C++98では最終的にこれを残す決定がなされた[32]。結局、C++11では実装の少なさ・困難さを理由に削除された。

コンパイラ開発者の裁量で決められる範囲を確保するため、C++標準化委員会は名前修飾例外処理などの実装に依存する機能の実装方法を決定しないことに決めた。この決定の問題は、コンパイラが異なるとオブジェクトファイルの互換性が保証されない点である。特定の機種やOSでコンパイラの互換性を持たせ、バイナリレベルでのコード再利用性を高めようとするABI[33]のような非標準の規格もあり、一部のコンパイラではこうした準規格を採用している。

2019年現在のメジャーなC++コンパイラ(gcc, Clang, Intel C++ Compiler, Microsoft Visual C++など)の最新版はC++11およびC++14規格にほぼ準拠しており、特にClangは2013年4月時点でC++11の全機能を実装完了した[34][35]。ただしマイナーアップデートとなるC++17を含めると、処理系間でのばらつきは依然として存在する。

C言語との互換性

C++は基本的にC言語の上位互換であるが、厳密には異なる[36]。C言語で記述された大半のプログラムはC++でコンパイルできるように簡単に修正できるが、C言語では正当でもC++では不正になる部分や、C++とは動作が異なる部分が若干存在する。

例えば、C言語では汎用ポインタvoid*は他の型へのポインタに暗黙的に変換できるが、C++ではキャスト演算子によって変換を明示する必要がある。またC++ではnewclassといった数多くの新しいキーワードが追加されたが、移植の際に元のC言語のプログラムでそれらが識別子(例えば変数名)として使われていると、問題になる。

C言語の標準規格であるC99やその後継C11ではこうした非互換性の一部が解決されており、//形式のコメントや宣言とコードの混在といったC++の機能がC言語でサポートされている。その一方でC99では、可変長配列、複素数型の組み込み変数、指示初期化子、複合リテラルといった、C++でサポートしていない数多くの新機能が追加された[37]。C99で追加された新機能の一部はC++11に反映され、C++14に対してもC99やC11との互換性を向上される提案が行われた。また、可変長配列や複素数型などのC99に追加された機能の一部はC11でオプションとなった[38][39]

C++で書かれた関数をC言語で書かれたプログラムから呼び出す、あるいはその逆を行なう場合など、C言語のコードとC++のコードを混在させるためにはCリンケージを利用する必要があり、関数をextern "C"で個別に修飾するか、extern "C" { ... }のブロックの中で宣言しなければならない。また、関数引数や戻り値などのインターフェイスはC言語互換形式に合わせる必要がある。Cリンケージを利用した関数については、C++名前修飾がされず、名前修飾に依存している関数オーバーロード機能は利用できない。

C/C++の相互運用性が確保されていることで、慣れ親しんだC言語標準ライブラリ関数の大半をC++でもそのまま利用し続けることができるということはC++の大きなメリットのひとつである。

主なC++処理系

注釈

  1. ^ Open issues for The C++ Programming Language (3rd Edition) - このコードはストロヴストルップ自身による訂正文からの引用(633ページ)。std::endl'\n'に改めている。またmain関数がデフォルトで0を返す件についてはwww.research.att.com及びwww.delorie.com/djgpp/ を参照されたし。このデフォルト仕様はmain関数のみであり他の関数にはない。

出典

  1. ^ a b 『プログラミング言語C++』第4版、pp.12-13。
  2. ^ 『C++の設計と進化』、pp.152-153。
  3. ^ 『プログラミング言語C++』第4版、p.11。
  4. ^ Bjarne Stroustrup's FAQ - When was C++ invented?” (English). 2006年5月30日閲覧。
  5. ^ Bjarne Stroustrup; Margaret A. Ellis (1990). The Annotated C++ Reference Manual. Addison-Wesley Professional. ISBN 978-0201514599 
  6. ^ Bjarne Stroustrup; Margaret A. Ellis『The Annotated C++ Reference Manual』足立高徳、小山裕司、シイエム・シイ、2001年。ISBN 978-4901280396 
  7. ^ ISO/IEC 14882:1998
  8. ^ ISO/IEC 14882:2003
  9. ^ ISO/IEC TR 19768:2007
  10. ^ ISO/IEC 14882:2011
  11. ^ ISO/IEC 14882:2014
  12. ^ https://www.iso.org/standard/68564.html
  13. ^ https://www.iso.org/standard/79358.html
  14. ^ We have C++14! : Standard C++
  15. ^ Current Status”. isocpp.org. 7 September 2020閲覧。
  16. ^ C++20 Approved -- Herb Sutter”. isocpp.org. 8 September 2020閲覧。
  17. ^ ISO/IEC 14882:2020”. 2021年3月16日閲覧。
  18. ^ Working Draft, Standard for Programming Language C ++” (2020年12月15日). 2021年3月16日閲覧。
  19. ^ Sutter, Herb (29 July 2020). “Business Plan and Convener's Report: ISO/IEC JTC1/SC22/WG21 (C++)”. 2021年3月16日閲覧。
  20. ^ Upcoming Meetings, Past Meetings”. 2021年3月16日閲覧。
  21. ^ Ranns, Nina (2020年11月19日). “WG21 2020-11 Virtual Meeting: Minutes of Meeting”. 2021年3月16日閲覧。
  22. ^ Koenig, Andrew; Bjarne Stroustrup (1989年5月11日). “C++: as close as possible to C – but no closer” (PDF) (英語). 2016年11月19日閲覧。
  23. ^ Stroustrup, Bjarne. “Stroustrup: FAQ Is C a subset of C++?” (英語). 2016年11月19日閲覧。
  24. ^ 『C++の設計と進化』、pp.124-125。
  25. ^ Bjarne Stroustrup (2000年). The C++ Programming Language (Special Edition ed.). Addison-Wesley. pp. 46. ISBN 0-201-70073-5 
  26. ^ 式 - cppreference.com
  27. ^ Sutter, Herb; Alexandrescu, Andrei (2004). C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. Addison-Wesley 
  28. ^ Henricson, Mats; Nyquist, Erik (1997). Industrial Strength C++. Prentice Hall. ISBN 0-13-120965-5 
  29. ^ Stroustrup, Bjarne (2000). The C++ Programming Language (Special Edition ed.). Addison-Wesley. p. 310. ISBN 0-201-70073-5. "A virtual member function is sometimes called a method." 
  30. ^ Andrew Birkett. “Parsing C++ at nobugs.org”. Nobugs.org. 2009年7月3日閲覧。
  31. ^ Why We Can’t Afford Export (PDF, 266 KB)
  32. ^ Minutes of J16 Meeting No. 36/WG21 Meeting No. 31, April 7-11, 2003” (2003年4月25日). 2006年9月4日閲覧。
  33. ^ C++ ABI”. 2006年5月30日閲覧。
  34. ^ 後藤大地 (2013年4月22日). “LLVM Clang、C++11にフル対応”. マイナビニュース. 2013年9月7日閲覧。
  35. ^ GCC 4.8 Release Series — Changes, New Features, and Fixes - GNU Project”. gcc.gnu.org. 2022年11月7日閲覧。
  36. ^ Bjarne Stroustrup's FAQ - Is C a subset of C++?”. 2008年1月18日閲覧。
  37. ^ C9X -- The New C Standard”. 2008年12月27日閲覧。
  38. ^ 可変長配列: §6.7.6.2
  39. ^ C言語の最新事情を知る: C99の仕様 - Build Insider

参考文献

関連項目

外部リンク


C--

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/23 04:24 UTC 版)

ナビゲーションに移動 検索に移動
C--
パラダイム 命令型プログラミング 
登場時期
  • 1997年 
開発者 サイモン・ペイトン・ジョーンズ 
最新リリース 2.0 / 2005年2月23日[1]
影響を受けた言語 C言語 
ウェブサイト
拡張子 c-- 
テンプレートを表示

C--(シーマイナスマイナス)は、人間ではなくコンパイラが生成することを想定したC言語風のプログラミング言語中間言語)である。Haskell処理系のデファクトスタンダードであるGlasgow Haskell Compilerが、複数ある中間言語の一つとして採用している。

歴史

1990年代、マルチプラットフォームプログラミング言語は、元言語ソースコードをC言語ソースコードトランスパイルして、C言語ソースコードを対象プラットフォームマシンコードコンパイルしていた[2]。C言語コンパイラは多様なプラットフォームのマシンコード出力をサポートしていたため、C言語を中間言語として採用することは現実的に利にかなった手法である。しかし、C言語は人間が読み書きするプログラミング言語として設計されているため、機械が処理してトランスパイルして生成する中間言語としては最適設計ではなかった。例えば、C言語ではガベージコレクション例外処理は意図的に言語仕様に組み込んでおらず、それらの機能を利用したプログラミング言語からC言語へのトランスパイルは一部機能が利用不可となる制限がありえた。

1997年、それらの課題を解決するため、ノーマン・ラムゼーはC--をImplementing Functional LanguagesワークショップでC--: A Portable Assembly Languageのタイトルで、コンパイラが扱うC言語に代わる中間言語として発表した[3]。C--は人間が読み書きするプログラミング言語としての特性より機械が処理する中間言語としての特性を重視し、多種プログラミング言語をフロントエンドに置きうるバックエンド仕様、マルチプラットフォームのマシンコード値型、ガベージコレクション・例外処理などのランタイムインターフェースを提供した。

1999年5月23日、C--バージョン1の言語仕様リファレンスがリリースされた[4]

2005年2月23日、C--バージョン2の言語仕様リファレンスがリリースされた[5]

2003年10月6日から2006年10月31日までの間、C--およびQuick C--の開発はアメリカ国立科学財団の支援を受けていた[6]

設計

C--は、人間が読み書きするためのプログラミング言語としてではなく、マシンが解釈するアセンブリ言語として設計されている。C--コードは極力プラットフォームアーキテクチャに依存せず、直交性・最小性より性能・利便性を重要視した言語仕様である。C--の文法は、C言語の言語仕様に似たプログラミング言語の特徴を持っている[7]

データ
プリミティブ型・参照型で定義される。プリミティブ型には16bit正数値のint型、 8bit文字のchar型、真偽値のboolean型がある。参照型にはプリミティブ型配列の配列型、複数型から成る構造体型がある。文字列はchar配列で表される。
変数
スタック型・ヒープ型で定義される。関数内のローカル変数はスタック変数、関数外のグローバル変数はヒープ変数として扱われる。
関数
関数名・返り値型・ブロック文で定義される。返り値は無を返す場合でも省略することは出来ず、キーワードvoidの返却を明記する。
演算子
C言語演算子を踏襲した比較演算・四則演算・ビット演算などが定義される。
空文・式文・ブロック文・if文・while文・do-while文・for文・return文・break文・continue文で定義される。

処理系

C--コードをマシンコードにコンパイルする処理系は複数存在する[8]。2018年現在、大半の処理系がソースコードの公開を含めメンテナンスされていない。

Quick C--
Quick C--は、The Quick C-- Teamが開発するコンパイラである[9]。C--バージョン2のC--コードをIntel x86のLinuxマシンコードへコンパイルする。他プラットフォームのマシンコードへのコンパイルは試験版機能として実装されている。従来はC--言語仕様の開発と平行してQuick C--が開発されていたが、2018年現在はgithubにソースコードが保管されているのみで開発は継続していない[10]
cmmc
cmmcは、Fermin ReigがML言語で実装したC--コンパイラである。Alpha・Sparc・X86のマシンコードを出力する。
Trampoline C-- Compiler
Trampoline C-- Compilerは、1999年5月にSergei Egorovが開発したC--からC言語へのトランスパイラである。
Oregons Graduate Institutes C-- compiler
Oregons Graduate Institutes C-- compiler(OGI C-- Compiler)は、1997年にML言語で実装された最初期のプロトタイプのC--コンパイラである[11]。Quick C--の開発が始まってからはメンテナンスは継続していない。

類似言語

Universal Computer Oriented Language英語版
Universal Computer Oriented Language(UNCOL)は、1958年にメルヴィン・コンウェイが提唱した中間言語である[12]。言語仕様として完全なものは存在しておらず、プログラミング言語とコンパイラの在り方に対する新しいコンセプトとして提案された。
GNU Assembler
GNU Assembler(GAS)は、1986年代に発表されたGCCのアセンブリ言語である[13]。GCCはC/C++ソースコードからGASソースコードへトランスパイルして、GASソースコードで処理最適化を実施してから、対象プラットフォームのマシンコードへコンパイルする。GCCはC/C++以外のプログラミング言語にも対応しており、他プログラミング言語のコンパイルでも同様の処理を経てマシンコードを出力する。
LLVM Assembly
LLVM Assembly(LLVM IR)は、2000年代以降に開発されているLLVMの中間言語である[14]。LLVMはコンパイルのバックエンド処理を主に担うコンパイラコンポーネントである。フロントエンド処理を担うのはclangrustcswiftcなどのプログラミング言語毎の異なるコンポーネントである。LLVMはLLVM IRソースコードで処理最適化を実施してから、対象プラットフォームのマシンコードへコンパイルする。

脚注

  1. ^ 出典URL: https://www.cs.tufts.edu/~nr/c--/extern/man2.pdf
  2. ^ Christopher Heng (30 August, 2017). “Free Modula-3 Compilers and Development Environment”. 2018年4月22日閲覧。 “It uses the GNU C Compiler as a backend to generate binaries.”
  3. ^ Norman Ramsey (2007年2月5日). “C--: A Portable Assembly Language”. 2018年4月22日閲覧。
  4. ^ Norman Ramsey (1999年5月23日). “The C-- Language Specification Version 2.0”. 2018年4月22日閲覧。
  5. ^ Norman Ramsey (2007年2月5日). “C-- Manual Version 1 (pdf)”. 2018年4月22日閲覧。
  6. ^ NSF Award Search: Award#0325460 - ITR Collaborative Research: A Reusable, Extensible, Optimizing Back End”. National Science Foundation. 2018年4月22日閲覧。
  7. ^ 柳 洋輔 (2015年9月15日). “C--言語からC言語への変換系の実用化”. 2018年4月22日閲覧。
  8. ^ Norman Ramsey (2007年2月5日). “C-- Downloads - Other C-- compilers”. 2018年4月22日閲覧。
  9. ^ The Quick C-- Team (2014年1月24日). “Release notes for the Quick C-- compiler Release 20140124 (pdf)”. 2018年4月22日閲覧。
  10. ^ Norman Ramsey (2014年1月25日). “The Quick C-- Compiler”. 2018年4月22日閲覧。
  11. ^ Pacsoft Research C-- Compiler”. Pacific Software Research Center. (1998年3月4日). 2007年8月16日時点のオリジナル[リンク切れ]よりアーカイブ。
  12. ^ Melvin E. Conway. “Proposal for an UNCOL”. Communications of the ACM. 2018年4月22日閲覧。
  13. ^ Dean Elsner. “Using as The gnu Assembler (pdf)”. The Regents of the University of Michigan. 2018年4月22日閲覧。
  14. ^ LLVM IR and Transform Pipeline (pdf)”. 2018年4月22日閲覧。

外部リンク


ローマ数字

(C から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/13 08:06 UTC 版)

ローマ数字(ローマすうじ)は、を表す記号の一種である。ラテン文字の一部を用い、例えばアラビア数字における 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 をそれぞれ I, II, III, IV, V, VI, VII, VIII, IX, X のように表記する。I, V, X, L, C, D, Mはそれぞれ 1, 5, 10, 50, 100, 500, 1000 を表す。i, v, x などと小文字で書くこともある。現代の一般的な表記法では、1以上4000未満の数を表すことができる。

ローマ数字のことをギリシャ数字と呼ぶ例が見られるが、これは誤りである。

表記法

古代ローマにおいて成立し、中世後期までヨーロッパで一般的に用いられていた表記法。ただしこれを規定する公式な、あるいは広く知られた標準となる表記法は存在していない[注 1]。 16世紀頃からはアラビア数字での表記が一般的になったが、特定の場面においては現代でも用いられている。

十進法に基づいている。 数を10の冪ごとに、つまり 1000の位の量 + 100の位の量 + 10の位の量 + 1の位の量 と分解し、左からこの順番に書き下す。この際、空位の0は書かれることはない。位ごとに異なる記号が用いられるが、記号の組み合わせのパターンは共通である。

ローマ数字の表記方法
ローマ数字 I V X L C D M
アラビア数字 1 5 10 50 100 500 1000

それぞれの位の量は更に上記の数字の和に分解され、大きい順に並べて書かれる。5未満はIの繰り返しで表され、5以上はVIをいくつか加える形で表される。(画線法

また、小さい数を大きい数の左に書くこともあり、この場合右から左を減ずることを意味する。これを減算則という。

ローマ数字の表記方法(減算則)
ローマ数字 IV IX XL XC CD CM
アラビア数字 4 9 40 90 400 900

これらの数は減算則を使わず表現することも可能(例:4 を「IIII」、9を「VIIII」)だが、通常は減算則を用いて表記する。なお、減算則が用いられるのは4 (40, 400) と9 (90, 900) を短く表記する場合だけであり、それ以外で使うことは通常行われない(例外は#異表記を参照のこと)。つまり、8を「IIX」と表記したり、位ごとの分離を破って45を「VL」、999を「IM」と表記することは基本的でない書き方とされる。

以上を踏まえると、1 から 9 とその 10 倍と 100 倍、および1000、2000、3000は以下のような表記となる。

表記法の表
×1 ×10 ×100 ×1000
1 I X C M
2 II XX CC MM
3 III XXX CCC MMM
4 IV XL CD [注 2]
5 V L D
6 VI LX DC
7 VII LXX DCC
8 VIII LXXX DCCC
9 IX XC CM

これらを組み合わせることで、1 から 3999 の値が表現できる。だが言い換えれば、(パターンを守ろうとすると)4000以上の数値を表すことは不可能である。また、0 を表す記号は存在しない。このため、 0 の値が入る桁の数値は表記せず、そのまま空位とする。

また、整数小数が一貫しておらず、整数が十進法(二五進法)である一方、小数には十二進法が適用され、1/12や1/144の小数が作られている。

小数は、3/12 (= 1/4)が「点3つ」、6/12 (= 1/2)が「S」、9/12 (= 3/4)が「Sに点3つ」として、で一旦繰り上がる方法で表記されている。

ローマ数字の並べ方の例

12 = 10 × 1 + 1 × 2
  = X + II
  = XII

24 = 10 × 2 + (−1 + 5)
  = XX + IV
  = XXIV

42 = (−10 + 50) + 1 × 2
  = XL + II
  = XLII

49 = (−10 + 50) + (−1 + 10)
  = XL + IX
  = XLIX

89 = 50 + 10 × 3 + (−1 + 10)
  = L + XXX + IX
  = LXXXIX

299 = 100 × 2 + (−10 + 100) + (−1 + 10)
  = CC + XC + IX
  = CCXCIX

302 = 100 × 3 + (10 × 0) + 1 × 2
  = CCC + + II
  = CCCII

493 = (−100 + 500) + (−10 + 100) + 1 × 3
  = CD + XC + III
  = CDXCIII

1960 = 1000 × 1 + (−100 + 1000) + 50 + 10 + (1 × 0)
  = M + CM + L + X
  = MCMLX

3999 = 1000 × 3 + (−100 + 1000) + (−10 + 100) + (−1 + 10)
  = MMM + CM + XC + IX
  = MMMCMXCIX

なお、手書きでは、大文字のローマ数字は上下のセリフをつなげて書くことが多い。「V」は上部のセリフをつなぎ、逆三角形(▽)のようになる。小文字ではセリフを書かない。

時計の文字盤での表記

時計の文字盤は伝統的に4時を「IIII」と表記することが多い。その由来には下記のように様々な説が唱えられているが定説はない。なお、9時は通常表記の「IX」の場合が多い。また、4時を通常表記の「IV」と表記している時計も存在しており、この表記方法は絶対的な物ではない(同様に、9時を「VIIII」と表記している時計も存在する)。

  • ローマ神話の最高神・ユピテル (IVPITER) の最初の2文字と重なるのを避けるため。
  • 4を「IV」と書くと「VI」と見分けにくいため。
  • IIII」ならば「I」という刻印を4回押せば文字盤の文字が作れるが、「IV」だと専用の型が必要になる。
  • 専用の文字を使うのは、ちょうど間が4時間おきになる VX だけのほうがいい。
  • IIII」にすれば左側の「VIII」と文字数が釣り合い、見栄えがよい。
  • 特定の有力なローマの時計製造者が「IIII」と書いた時計を作ったため、他の製造者もそれに倣った。
  • ルイ14世が、文字盤に「IV」を用いることを禁じた。
  • シャルル4世が、「IV」を用いることを禁じた。

異表記

古代ローマのセミスコイン。12を表す S の文字が刻印されている。
  • 減算の文字を複数並べる。(例)8 = IIX,80 = XXC
  • 500 に「D」を使わない。(例)1611 = MCCCCCCXI
  • 減算を行わない。(例)1495 = MCCCCLXXXXV
  • 任意の自然数 n に対し、10n を表す文字の前に、5m10n − 2 (m = 0, 1) 以下を表す文字を使う。(例)490 = -10 + 500 = XD
  • 簡略表記。Microsoft Excel の ROMAN 関数で「書式4」を使用。(例)999 = IM

ローマ数字はもともと厳密な規則が定義されたものではなく、特に減算則に関しては様々な異表記が見られる。当初は減算則が存在しなかったため、4 を「IIII」、9 を「VIIII」と書いていた。「The Forme of Cury」(14世紀の著名な英語の料理解説書)は 4 = IIII、9 = IXと表記している一方で「IV」と表記した箇所もある。

ほかに、80 = R、2000 = Zとする異表記もある。また、12 = S112 = などとする分数の記号もあった。

4000以上の大きな数字

前述の通り、4000以上の数値の表記は、パターンに従った通常の方法では不可能であり、1 から 3999 の数値までしか表記できない。現代ではあまり使用されないが、4000以上の表記は下記の方法によって行う。

重ね表記

1000 を表すのに「M」ではなく「」または「CIↃ」を用いる場合もある。5000 を「」または「IↃↃ」、10000 を「」または「CCIↃↃ」で表した例もある。同様にして 50000 は「」または「IↃↃↃ」、100000 は「」または「CCCIↃↃↃ」となる。

基本数字 C|Ɔ (M) = 1,000 CC|ƆƆ = 10,000 CCC|ƆƆƆ = 100,000
+ |Ɔ (D) = 00500 C|Ɔ|Ɔ (MD) = 1,500 CC|ƆƆ|Ɔ = 10,500 CCC|ƆƆƆ|Ɔ = 100,500
+ |ƆƆ = 05,000 - CC|ƆƆ|ƆƆ = 15,000 CCC|ƆƆƆ|ƆƆ = 105,000
+ |ƆƆƆ = 50,000 - - CCC|ƆƆƆ|ƆƆƆ = 150,000
つなぎ表記
通常のローマ数字に上線を付加することで、1,000 倍を表現する。また二重上線では 1,000,000 倍となる。すなわちn重の上線は 1,000n (1,000のn)倍を表す。
  • 4,000 = IV = MV
  • 5,300 = VCCC
  • 6,723 = VIDCCXXIII = VMDCCXXIII
  • 9,999 = IXCMXCIX = MXCMXCIX
  • 51,200 = LICC
  • 99,999 = XCIXCMXCIX
  • 500,000 = DI
  • 921,600 = CIXXIDC
  • 3,000,000 = III
  • 9,125,334 = IXCCXXVCCCXXXIV
  • 91,200,937 = XCICCCMXXXVII
  • 235,002,011 = CCXXXVIIXI
前後に縦線を付加することで、さらに 100 倍(都合 100,000 倍)を表す。
  • 800,000 = |VIII|
  • 1,040,000 = |X|XL (= 10 × 1,000 × 100 + (-10 + 50) × 1,000) = IXL (= 1 × 1,000,000 + (-10 + 50) × 1,000)

用途

東京競馬場ターフビジョン

現在、ローマ数字は序数、章番号、ページ番号、文章の脚注番号などに使うことが多いが、酸化銅(II)など一部例外がある[2]

ローマ数字の歴史

古代ローマ人は元々農耕民族だった。の数を数えるのにに刻み目を入れた。から1匹ずつヤギが出て行くたびに刻み目を1つずつ増やしていった。3匹目のヤギが出て行くと「III」と表し、4匹目のヤギが出て行くと3本の刻み目の横にもう1本刻み目を増やして「IIII」とした。5匹目のヤギが出て行くと、4本目の刻み目の右にこのときだけ「V」と刻んだ(∧と刻んだ羊飼いもいた)。このときの棒についた刻み目は「IIIIV」となる。6匹目のヤギが出て行くと、刻み目の模様は「IIIIVI」、7匹目が出て行くと「IIIIVII」となる。9匹目の次のヤギが出て行くと「IIIIVIIII」の右に「X」という印を刻んだ。棒の模様は「IIIIVIIIIX」となる。31匹のヤギは「IIIIVIIIIXIIIIVIIIIXIIIIVIIIIXI」と表す。このように刻んだのは、夕方にヤギが1匹ずつ戻ってきたときに記号の1つ1つがヤギ1匹ずつに対応していたほうが便利だったためである。ヤギが戻ると、記号を指で端から1個1個たどっていった。最後のヤギが戻るときに指先が最後の記号にふれていれば、ヤギは全部無事に戻ったことになる。50匹目のヤギはN、+または⊥で表した。100匹目は*で表した。これらの記号はローマのそばのエトルリア人も使った。エトルリアのほうが文明が栄えていたので、そちらからローマに伝わった可能性もある。1000は○の中に十を入れた記号で表した。

よく言われる「X」は「V」を2つ重ねて書いたもの、あるいは「V」は「X」の上半分という説は、誤りとは言い切れないが確たる根拠もないようである。

やがて時代が下り、羊以外のものも数えるようになると、31は単に「XXXI」と書くようになった。5はしばらく「V」と「∧」が混在して使われた。50は当初NИKΨ、などと書き、しばらく「⊥」かそれに似た模様を使ったが、アルファベットが伝わると混同して「L」となった。100は*だけでなくЖHなどと書いたが、*がしだいに離れて「>|<」や「⊃|⊂」になり、よく使う数なので簡略になり、「C」や「⊃」と書きそのまま残った(ラテン語の"centum=100"が起源という説もある)。500は最初、1000を表す「⊂|⊃」から左の⊂を外し、「|⊃」と書いた。やがて2つの記号がくっつき、「D」となった。「D」の真ん中に横棒がついて「D」や「Ð」とも書いた。1000は○に十の記号が省略されて「⊂|⊃」となった。「∞」と書いた例もある。これが全部くっついたのが「Φ」に似た記号である。これが別の変形をし上だけがくっついて「m」に似た形になり、アルファベットが伝わると自然と「M」と書かれるようにもなった(ラテン語の"mille=1000"からも考慮されている)。そのため、1000は今でも2つの表記法が混在している。

5000以上の数は100と1000の字体の差から自然に決まった。ただし、「」を上下逆に書いた形(X)で1000000 (100万)を表したこともある。

古代ローマ共和国時代の算盤では、記号の上に横棒を引いて1000倍を表したものもある。この方法では、10000は「X」の上に横棒を1本引いたもので表される。100000 (10万) や1000000 (100万) は「C」や「M」の上に横棒を1本を引いて表した。たとえば10000は「X」となる。

例:CCX[注 3] = 210000 (21万)

数字の上部分に「 ̄」・左右に「|」をそれぞれつけて10万倍を表すこともあった(上と左右の線をくっつけて表記することも多い)。たとえば10(X)を10万倍した数=1000000 (100万) は、「X」と表記する。

例:

  • |MCLII| XXXVII CCXXXII[注 4] = 115237232 (1億1523万7232)
  • |MMCCCXXII| LXXI CCXXXVIII[注 5] = 232271238 (2億3227万1238)

その後、他の文明との接触により変わった表記法が現れた。1世紀プリニウスは著書『博物誌』で83000を「LXXXIII.M[注 6]」と表記した。83.1000 (83の1000倍) という書き方である。同じ文書中に、XCII.M [注 7](92000)、VM [注 8](5000) という表記もある。この乗算則はしばらく使われたようである。1299年に作成された『王フィリップ4世の財宝帳簿』では、5316を「VmIIIcXVI[注 9]」と表した。漢数字の書き方によく似ている。ただしこれらの乗算則は現在は使われない。

1000を超える数の表記法に混乱があるのは一般人は巨大な数を扱う機会がなかったためと考えられる。

その他

  • Microsoft ExcelROMANという関数は 0 から 3999 までの数をローマ数字に変換する。範囲外の数ではエラー値「#VALUE!」が表示される。なお、0の場合はエラー値でなく空文字列を返す。
  • 英語で100 ドル札を「C-bill」や「C-note」と呼ぶのはローマ数字の C に由来する[要出典]

文字コードにおけるローマ数字

基本的には通常のラテン文字を並べてローマ数字を表現する。Unicode 以前から欧米で一般的に使用されている ISO/IEC 8859 などの文字コードは、ローマ数字専用の符号を持っていない。

JIS規格

日本で用いられる文字コードとしても、JIS X 0208 にはローマ数字専用の符号は定義されていない。これを拡張した Microsoftコードページ932 (CP932) や MacJapanese などにおいて、いわゆる機種依存文字として定義されており、追って JIS X 0213 にも取り入れられた。CP932 にあるのは大文字 I から X と小文字 i から x の合成済み 20 字 (1 から 10 に相当)、MacJapanese にあるのは 大文字 I から XV と小文字 i から xv の合成済み 30 字 (1 から 15 に相当)、JIS X 0213 は大文字 I から XII と小文字 i から xii の合成済み 24 字 (1 から 12 に相当) である。これらは縦書きの組版の際に縦中横を容易に実現するために用いられ(一般の組版ルールでローマ数字は縦中横である)、多くのフォントで全角文字としてデザインされる。

Unicode

Unicode は、JIS X 0213 などとの互換性のために上述の合成済みローマ数字を収録した上、その延長として Ⅼ, Ⅽ, Ⅾ, Ⅿ, ⅼ, ⅽ, ⅾ, ⅿ[注 10]、また通常のラテン文字にない Ↄ, ↄ, ↀ, ↁ, ↂ, ↇ, ↈ, ↅ, ↆ [注 11]も定義している。これらは U+2160 から U+2188 までの符号位置を割り当てられている。(Unicode 7.0.0 時点)〈登録領域〉Number Form(数字に準じるもの)

機械処理の注意点

ラテン文字と共通の符号を用いるため、「I」「V」「X」「L」「C」「D」「M」が機械処理の際にアルファベットそのものを表しているのか、数字の「1」「5」「10」「50」「100」「500」「1000」を表しているのか解釈を誤る場合がある。

符号位置

Unicodeに存在しないMacJapaneseのローマ数字 (XIII, XIV, XV, xiii, xiv, xv) は、Unicodeの私用領域Appleが独自に定義した制御文字の後ろに組文字を構成する文字を続けることで表される[3]

JIS X 0213Microsoftコードページ932・MacJapanese・Unicodeにあるローマ数字
大文字 Unicode JIS X 0213 文字参照 小文字 Unicode JIS X 0213 文字参照 備考
U+2160 1-13-21 &#x2160;
&#8544;
U+2170 1-12-21 &#x2170;
&#8560;
ローマ数字1
U+2161 1-13-22 &#x2161;
&#8545;
U+2171 1-12-22 &#x2171;
&#8561;
ローマ数字2
U+2162 1-13-23 &#x2162;
&#8546;
U+2172 1-12-23 &#x2172;
&#8562;
ローマ数字3
U+2163 1-13-24 &#x2163;
&#8547;
U+2173 1-12-24 &#x2173;
&#8563;
ローマ数字4
U+2164 1-13-25 &#x2164;
&#8548;
U+2174 1-12-25 &#x2174;
&#8564;
ローマ数字5
U+2165 1-13-26 &#x2165;
&#8549;
U+2175 1-12-26 &#x2175;
&#8565;
ローマ数字6
U+2166 1-13-27 &#x2166;
&#8550;
U+2176 1-12-27 &#x2176;
&#8566;
ローマ数字7
U+2167 1-13-28 &#x2167;
&#8551;
U+2177 1-12-28 &#x2177;
&#8567;
ローマ数字8
U+2168 1-13-29 &#x2168;
&#8552;
U+2178 1-12-29 &#x2178;
&#8568;
ローマ数字9
U+2169 1-13-30 &#x2169;
&#8553;
U+2179 1-12-30 &#x2179;
&#8569;
ローマ数字10
JIS X 0213やMacJapanese・Unicodeにあるローマ数字
大文字 Unicode JIS X 0213 文字参照 小文字 Unicode JIS X 0213 文字参照 備考
U+216A 1-13-31 &#x216A;
&#8554;
U+217A 1-12-31 &#x217A;
&#8570;
ローマ数字11
U+216B 1-13-55 &#x216B;
&#8555;
U+217B 1-12-32 &#x217B;
&#8571;
ローマ数字12
Unicodeにあるローマ数字
大文字 Unicode JIS X 0213 文字参照 小文字 Unicode JIS X 0213 文字参照 備考
U+216C &#x216C;
&#8556;
U+217C &#x217C;
&#8572;
ローマ数字50
U+216D &#x216D;
&#8557;
U+217D &#x217D;
&#8573;
ローマ数字100
U+216E &#x216E;
&#8558;
U+217E &#x217E;
&#8574;
ローマ数字500
U+216F &#x216F;
&#8559;
U+217F &#x217F;
&#8575;
ローマ数字1000
U+2183 &#x2183;
&#8579;
U+2184 &#x2184;
&#8580;
ローマ数字逆100
記号 Unicode JIS X 0213 文字参照 名称
U+2180 &#x2180;
&#8576;
ローマ数字1000 C D
U+2181 &#x2181;
&#8577;
ローマ数字5000
U+2182 &#x2182;
&#8578;
ローマ数字10000
U+2187 &#x2187;
&#8583;
ローマ数字50000
U+2188 &#x2188;
&#8584;
ローマ数字100000
U+2185 &#x2185;
&#8581;
ローマ数字6 LATE FORM
U+2186 &#x2186;
&#8582;
ローマ数字50 EARLY FORM
Unicodeにないが、MacJapaneseにあるローマ数字
記号の再現 MacJapanese 記号の再現 MacJapanese 名称
XIII 0x85AB xiii 0x85BF ローマ数字13
XIV 0x85AC xiv 0x85C0 ローマ数字14
XV 0x85AD xv 0x85C1 ローマ数字15

脚注

注釈

  1. ^ 書き方ではなく読み方については以下の事例が参考になる――著作権法 (アメリカ合衆国)においてローマ数字による発行年表示が有効なものであるとされていて、不正なローマ数字は著作権表示を無効化しうる[1]。この際、下記のような書き方ルールに合致しているかどうかは問題とされない。
  2. ^ 詳しくは#4000以上の大きな数字を参照。
  3. ^ = [{(100 × 2) + 10} × 1000] = 210 × 1000 = 210000 (21万)
  4. ^ = [{1000 + 100 + 50 + (1 × 2)} × 100000] + [{(10 × 3) + 5 + (1 × 2)} × 1000] + {(100 × 2) + (10 × 3) + (1 × 2)} = 1152 × 100000 + 37 × 1000 + 232 = 115200000 (1億1520万) + 37000 + 232 = 115237232 (1億1523万7232)
  5. ^ = [{(1000 × 2) + (100 × 3) + (10 × 2) + (1 × 2)} × 100000] + (((50 + (10 × 2)) + 1) × 1000) + [(100 × 2) + (10 × 3) + {5 + (1 × 3)}] = 2322 × 100000 + 71 × 1000 + 238 = 232200000 (2億3220万) + 71000 + 238 = 232271238 (2億3227万1238)
  6. ^ = [{50 + (10 × 3)} × 1000] = 83 × 1000 = 83000
  7. ^ = [{(100 − 10) + 2} × 1000] = 92 × 1000 = 92000
  8. ^ = 5 × 1000 = 5000
  9. ^ = [(5 × 1000) + {(1 × 3) × 100} + (10 + 5 + 1)] = 5000 + 300 + 16 = 5316
  10. ^ 〔大文字〕U+216C, 216D, 216E, 216F〔小文字〕U+217C, 217D, 217E, 217F
  11. ^ (左から順に) U+2183, 2184, 2180, 2181, 2182, 2187, 2188, 2185, 2186

出典

  1. ^ Hayes, David P.. “Guide to Roman Numerals”. Copyright Registration and Renewal Information Chart and Web Site. 2021年11月29日閲覧。
  2. ^ 比留間直和 (2012年10月1日). “いつ使う?ローマ数字 - ことばマガジン”. 朝日新聞デジタル. 朝日新聞社. 2021年11月29日閲覧。
  3. ^ UnicodeコンソーシアムにあるMac OS Japaneseとの変換テーブル

関連項目


上付き文字

(C から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/07/19 06:07 UTC 版)

上付き文字(うえつきもじ、: superscript)は、基準となる文字より上部に記述される添え字である。

数学における冪乗を表す目的や、化学におけるイオン価数を表す目的、原子核物理学放射線医学などにおける放射性同位元素質量数を表す目的として使われるほか、文書における脚注参照、単位記号、TMなどの一部記号、発音記号などとしても用いられる。

冪乗の目的で使用される場合は、イオン価数の目的で使用される文字よりも上部に表記される。

フランス語イタリア語スペイン語などのロマンス諸語では、数字に上付きで e もしくは o/a を付記し、序数とそのを表示する。Unicode では、序数標識 º と ª が用意されている。これらは音楽などにも流用され、たとえばtempo primo(テンポプリーモ)をtempo 1ºと表記する。

HTMLのタグで表記する場合は<sup>上付き文字</sup>が使用される。

符号位置

大文字 Unicode JIS X 0213 文字参照 小文字 Unicode JIS X 0213 文字参照 備考
U+1D2C - &#x1D2C;
&#7468;
U+1D43 - &#x1D43;
&#7491;
A
U+1D2E - &#x1D2E;
&#7470;
U+1D47 - &#x1D47;
&#7495;
B
U+1D30 - &#x1D30;
&#7472;
U+1D48 - &#x1D48;
&#7496;
D
U+1D31 - &#x1D31;
&#7473;
U+1D49 - &#x1D49;
&#7497;
E
U+1D33 - &#x1D33;
&#7475;
U+1D4D - &#x1D4D;
&#7501;
G
U+1D34 - &#x1D34;
&#7476;
ʰ U+02B0 - &#x2B0;
&#688;
H
U+1D35 - &#x1D35;
&#7477;
U+2071 - &#x2071;
&#8305;
I
U+1D36 - &#x1D36;
&#7478;
ʲ U+02B2 - &#x2B2;
&#690;
J
U+1D37 - &#x1D37;
&#7479;
U+1D4F - &#x1D4F;
&#7503;
K
U+1D38 - &#x1D38;
&#7480;
ˡ U+02E1 - &#x2E1;
&#737;
L
U+1D39 - &#x1D39;
&#7481;
U+1D50 - &#x1D50;
&#7504;
M
U+1D3A - &#x1D3A;
&#7482;
U+207F - &#x207F;
&#8319;
N
U+1D3C - &#x1D3C;
&#7484;
U+1D52 - &#x1D52;
&#7506;
O
U+1D3E - &#x1D3E;
&#7486;
U+1D56 - &#x1D56;
&#7510;
P
ᴿ U+1D3F - &#x1D3F;
&#7487;
ʳ U+02B3 - &#x2B3;
&#691;
R
U+1D40 - &#x1D40;
&#7488;
U+1D57 - &#x1D57;
&#7511;
T
U+1D41 - &#x1D41;
&#7489;
U+1D58 - &#x1D58;
&#7512;
U
U+2C7D - &#x2C7D;
&#11389;
U+1D5B - &#x1D5B;
&#7515;
V
U+1D42 - &#x1D42;
&#7490;
ʷ U+02B7 - &#x2B7;
&#695;
W
記号 Unicode JIS X 0213 文字参照 名称
U+1D9C - &#x1D9C;
&#7580;
C
U+1DA0 - &#x1DA0;
&#7584;
F
ˢ U+02E2 - &#x2E2;
&#738;
S
ˣ U+02E3 - &#x2E3;
&#739;
X
ʸ U+02B8 - &#x2B8;
&#696;
Y
U+1DBB - &#x1DBB;
&#7611;
Z
U+2070 - &#x2070;
&#8304;
SUPERSCRIPT ZERO
¹ U+00B9 1-9-16 &#xB9;
&#185;
SUPERSCRIPT ONE
² U+00B2 1-9-12 &#xB2;
&#178;
SUPERSCRIPT TWO
³ U+00B3 1-9-13 &#xB3;
&#179;
SUPERSCRIPT THREE
U+2074 - &#x2074;
&#8308;
SUPERSCRIPT FOUR
U+2075 - &#x2075;
&#8309;
SUPERSCRIPT FIVE
U+2076 - &#x2076;
&#8310;
SUPERSCRIPT SIX
U+2077 - &#x2077;
&#8311;
SUPERSCRIPT SEVEN
U+2078 - &#x2078;
&#8312;
SUPERSCRIPT EIGHT
U+2079 - &#x2079;
&#8313;
SUPERSCRIPT NINE
U+207A - &#x207A;
&#8314;
SUPERSCRIPT PLUS SIGN
U+207B - &#x207B;
&#8315;
SUPERSCRIPT MINUS
U+207C - &#x207C;
&#8316;
SUPERSCRIPT EQUALS SIGN
U+207D - &#x207D;
&#8317;
SUPERSCRIPT LEFT PARENTHESIS
U+207E - &#x207E;
&#8318;
SUPERSCRIPT RIGHT PARENTHESIS
ª U+00AA 1-9-7 &#xAA;
&#170;
FEMININE ORDINAL INDICATOR
U+1D43 - &#x1D43;
&#7491;
MODIFIER LETTER SMALL TURNED A
U+1D45 - &#x1D45;
&#7493;
MODIFIER LETTER SMALL ALPHA
U+1D9B - &#x1D9B;
&#7579;
MODIFIER LETTER SMALL TURNED ALPHA
U+1D2D - &#x1D2D;
&#7469;
MODIFIER LETTER CAPITAL AE
U+1D46 - &#x1D46;
&#7494;
MODIFIER LETTER SMALL TURNED AE
U+1D2F - &#x1D2F;
&#7471;
MODIFIER LETTER CAPITAL BARRAD B
U+1D5D - &#x1D5D;
&#7517;
MODIFIER LETTER SMALL BETA
U+1D9D - &#x1D9D;
&#7581;
MODIFIER LETTER SMALL C WITH CURL
U+1D9E - &#x1D9E;
&#7582;
MODIFIER LETTER SMALL ETH
U+1D5E - &#x1D5E;
&#7518;
MODIFIER LETTER SMALL GREEK GAMMA
U+1D5F - &#x1D5F;
&#7519;
MODIFIER LETTER SMALL DELTA
U+1D4B - &#x1D4B;
&#7499;
MODIFIER LETTER SMALL OPEN E
U+1D4C - &#x1D4C;
&#7500;
MODIFIER LETTER SMALL TURNED OPEN E
U+1D9F - &#x1D9F;
&#7583;
MODIFIER LETTER SMALL REVERSED OPEN E
U+1D32 - &#x1D32;
&#7474;
MODIFIER LETTER CAPITAL REVERSED E
U+1D4A - &#x1D4A;
&#7498;
MODIFIER LETTER SMALL SCHWA
U+1DA1 - &#x1DA1;
&#7585;
MODIFIER LETTER SMALL DOTLESS J WITH STROKE
U+1DA3 - &#x1DA3;
&#7587;
MODIFIER LETTER SMALL TURNED H
U+1DA4 - &#x1DA4;
&#7588;
MODIFIER LETTER SMALL I WITH STROKE
U+1DA5 - &#x1DA5;
&#7589;
MODIFIER LETTER SMALL IOTA
U+1DA6 - &#x1DA6;
&#7590;
MODIFIER LETTER SMALL CAPITAL I
U+1D4E - &#x1D4E;
&#7502;
MODIFIER LETTER SMALL TURNED I
U+1DA7 - &#x1DA7;
&#7591;
MODIFIER LETTER SMALL CAPITAL I WITH STROKE
U+1DA8 - &#x1DA8;
&#7592;
MODIFIER LETTER SMALL J WITH CROSSED-TAIL
U+1DA9 - &#x1DA9;
&#7593;
MODIFIER LETTER SMALL L WITH RETROFLEX TAIL
U+1DAA - &#x1DAA;
&#7594;
MODIFIER LETTER SMALL L WITH PARATAL HOOK
U+1DAB - &#x1DAB;
&#7595;
MODIFIER LETTER SMALL CAPITAL L
U+1DAC - &#x1DAC;
&#7596;
MODIFIER LETTER SMALL M WITH HOOK
U+1DAD - &#x1DAD;
&#7597;
MODIFIER LETTER SMALL TURNED M WITH LONG LEG
U+1D3B - &#x1D3B;
&#7483;
MODIFIER LETTER CAPITAL REVERSED N
U+1DAE - &#x1DAE;
&#7598;
MODIFIER LETTER SMALL N WITH LEFT HOOK
U+1DAF - &#x1DAF;
&#7599;
MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
U+1DB0 - &#x1DB0;
&#7600;
MODIFIER LETTER SMALL CAPITAL N
U+1D51 - &#x1D51;
&#7505;
MODIFIER LETTER SMALL ENG
º U+00BA 1-9-17 &#xBA;
&#186;
MASCULINE ORDINAL INDICATOR
U+1D3D - &#x1D3D;
&#7485;
MODIFIER LETTER CAPITAL OU
U+1DB1 - &#x1DB1;
&#7601;
MODIFIER LETTER SMALL BARRED O
U+1D53 - &#x1D53;
&#7507;
MODIFIER LETTER SMALL OPEN O
U+1D54 - &#x1D54;
&#7508;
MODIFIER LETTER SMALL TOP HALF O
U+1D55 - &#x1D55;
&#7509;
MODIFIER LETTER SMALL BOTTOM HALF O
U+1DB2 - &#x1DB2;
&#7602;
MODIFIER LETTER SMALL PHI
U+1D60 - &#x1D60;
&#7520;
MODIFIER LETTER SMALL GREEK PHI
U+1DB3 - &#x1DB3;
&#7603;
MODIFIER LETTER SMALL S WITH HOOK
U+1DB4 - &#x1DB4;
&#7604;
MODIFIER LETTER SMALL ESH
U+1DB5 - &#x1DB5;
&#7605;
MODIFIER LETTER SMALL T WITH PARATAL HOOK
U+1DB6 - &#x1DB6;
&#7606;
MODIFIER LETTER SMALL U BAR
U+1DB7 - &#x1DB7;
&#7607;
MODIFIER LETTER SMALL UPSIRON
U+1DB8 - &#x1DB8;
&#7608;
MODIFIER LETTER SMALL CAPITAL U
U+1D59 - &#x1D59;
&#7513;
MODIFIER LETTER SMALL SIDEWAYS U
U+1D5A - &#x1D5A;
&#7514;
MODIFIER LETTER SMALL TURNED M
U+1DB9 - &#x1DB9;
&#7609;
MODIFIER LETTER SMALL V WITH HOOK
U+1DBA - &#x1DBA;
&#7610;
MODIFIER LETTER SMALL TURNED V
U+1D5C - &#x1D5C;
&#7516;
MODIFIER LETTER SMALL AIN
U+1D61 - &#x1D61;
&#7521;
MODIFIER LETTER SMALL CHI
U+1DBC - &#x1DBC;
&#7612;
MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
U+1DBD - &#x1DBD;
&#7613;
MODIFIER LETTER SMALL Z WITH CURL
U+1DBE - &#x1DBE;
&#7614;
MODIFIER LETTER SMALL EZH
ᶿ U+1DBF - &#x1DBF;
&#7615;
MODIFIER LETTER SMALL THETA

関連項目


丸囲みC

(C から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/16 02:41 UTC 版)

ナビゲーションに移動 検索に移動

丸囲みCは、囲み英数字の一種で、大文字または小文字Cで囲んだものである。

符号位置

大文字のCを丸で囲んだもの (Ⓒ) は、Unicodeでは"U+24B8"に収録されている。UTF-8では"e2 92 b8"とエンコードされる。

小文字のcを丸で囲んだもの (ⓒ) は、Unicodeでは"U+24D2"に収録されている。UTF-8では"e2 93 92"とエンコードされる。

使用例

丸囲みCは、著作権マークとして使用されている。

1947年から1949年にかけて発売された千代田光学(後のミノルタ)のカメラには、レンズに"ⓒ Super Rokkor"のように青いⓒマークが付いているものがあった。これは著作権表示ではなく、反射防止(coated)加工がされていることを示すものだった[1]。他のメーカーのレンズにも同様の意味の刻印があり、例えば、オリンパスズイコーレンズには、赤い"ZUIKO C."という表記があった。

このマークは、第二次世界大戦中に製造されたクルーバー社のプラスチック製の機体認識訓練用模型で広く使用された[2]

日本語の敬称の「ちゃん (Chan)」の意味で丸囲みCが使用されることがある。

脚注

  1. ^ Kilpatrick, David (2007年). “70 years of Minolta - The 1940s and 1950s”. Photoclub Alpha. 2015年6月7日閲覧。
  2. ^ Collect Air | Friend or Foe? Museum”. collectair.org. 2017年4月13日時点のオリジナルよりアーカイブ。2021年11月16日閲覧。

関連項目


著作権マーク

(C から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/11 23:36 UTC 版)

©️

著作権マーク(ちょさくけんマーク)またはコピーライトマークとは、大文字Cを丸で囲んだ記号(©)であり、音声録音[1]以外の作品の著作権表示に使用される記号である。

この記号の使用は、アメリカ合衆国の著作権法[2]や、国際的には万国著作権条約[3]に規定されている。ただし、ベルヌ条約の下では登録・納入・著作権表示等の形式的手続がなくても著作物が創作された時に著作権が発生するという無方式主義が採用されたため、ほとんどの国で著作権マークによる明示をしなくても著作権を得ることができる[4]

歴史

作品の著作権を示す記号の先駆は、1670年代のスコットランドの年鑑に見られる。その書籍には、その真正性を示すための紋章が印刷されていた[5]

アメリカ合衆国等での方式主義の採用

著作権の発生要件について、登録、納入、著作権表示など一定の方式を備えることを要件とする立法例を方式主義という[6]

著作権表示は、アメリカ合衆国の1802年の著作権法によって初めて規定された[7]。それは、"Entered according to act of Congress, in the year         , by A. B., in the office of the Librarian of Congress, at Washington."(        年、ワシントンにある議会図書館司書の事務所にA. B.が議会制定法英語版に従って記入した。)のように長いものであった。一般に、著作権表示は著作権で保護された作品自体に表示されていなければならなかったが、絵画のような美術作品の場合には、美術作品が設置されるべき物体の表面に刻印されていてもよい[8]。1874年、"Copyright, 18        , by A. B."と大幅に短縮された表示でも可能とするよう著作権法が改正された[9]

著作権マーク©は、1909年の著作権法(Copyright Act of 1909)第18条[10]で導入され、最初は絵画、グラフィック、彫刻作品にのみ適用された[11]。1954年、出版された著作物にもこの記号の使用が拡大された[11][12]

1909年の著作権法は、既存の著作権法を完全に書き直し、改訂することを意図していた。この法案の草案で最初に提案されたように、著作権の保護を受けるためには、芸術作品そのものに"copyright"という文言またはその認可された略語を入れることが要求された。この芸術作品には絵画も含まれていたが、額縁は取り外し可能であることから議論が起こった。1905年と1906年に行われた法案についての著作権保持者間の会議では、芸術家組織の代表者はこの要件に反対し、作品自体に作者名以外の文言を書くことを望まなかった。妥協案として、作品自体に書かれる作者名の横に、比較的邪魔されない記号(大文字のCを丸で囲んだ記号)を書き足す案が出された[13]。実際に、ハーバート・パトナム議会図書館司書の指導の下、著作権委員会がまとめた1906年の議会に提出された法案は、特別な著作権マーク、丸で囲まれた文字Cを、"copyright"やその略語"copr."の代わりに使用することができるが、それは芸術作品などの限られたカテゴリについてのみ使用でき、通常の書籍や定期刊行物は含まれないとしている[14]。1909年の著作権法は、1946年に合衆国法典第17号に組み込まれた時点でも変更されなかった。1954年の改正で、全ての著作物について記号©が"Copyright"または"Copr."の代替として許可された[12]

ベルヌ条約と無方式主義への移行

1886年に締結されたベルヌ条約は1908年のベルリンでの改正条約で無方式主義を採用した[15]。無方式主義とは著作物が創作された時点で何ら方式を必要とせず著作権の発生を認める立法例をいう[4]

ベルヌ条約締結後もアメリカ合衆国や中南米諸国の一部などは同条約に加盟せず方式主義をとっていた[15][6]。そこで1952年の万国著作権条約は無方式主義を採る国における著作物が方式主義を採る国でも著作権保護を得ることができるよう、氏名と最初の発行年、©のマークの3つを著作権表示として明示すれば自動的に著作権の保護を受けることができるとした[16](万国著作権条約では©マークは代替の記号ではなく著作権表示の要件の一つである[16])。

その後、1989年にアメリカ合衆国がベルヌ条約に加盟したほか中南米諸国も次々にベルヌ条約に加盟し無方式主義に移行した[16]。ベルヌ条約の加盟国では、著作権を確立するのに著作権表示を行う必要はなく、著作物の作成時に自動的に著作権が確立する[17](ベルヌ条約と万国著作権条約の双方に加盟している場合には万国著作権条約17条によりベルヌ条約が優先する[18])。ほとんどの国がベルヌ条約に加盟しているため、著作権の発生要件としての著作権表示を必要としなくなった。

アメリカ合衆国の著作権表示

アメリカ合衆国では、1989年3月1日以前には以下の形式の著作権表示が必要とされた[19]

  • ©記号、または"Copyright"(あるいはその略語の"Copr.")という文言
  • その作品の最初の出版年
  • 著作権の所有者の識別情報。名前、その省略形、一般に知られている名称のいずれかによる

例えば、2011年に初めて出版された作品の場合は、以下のようになる。

© 2011 John Smith

以上の表示は、かつてアメリカ合衆国で著作権保護を受けるために必要だったが、ベルヌ条約に加盟している国では必要ない[17]。アメリカ合衆国は1989年3月1日にベルヌ条約に加盟した[20]。ただし、万国著作権条約の適用を受けるためには今も©マークを用いた方式をとる必要がある[16]

なお、条約上の著作権の発生要件の問題とは別に著作権表示は国内法上一定の効果を生じることがある。アメリカの著作権法では著作権の存在を知らずパブリックドメインと信じた者を保護する善意の侵害者(innocent infringers)の法理があるが、©マーク等の著作権表示が著作物に明確に表示されていれば原則として善意の侵害には当たらないとされている[16]

デジタル表現

タイプライターASCIIベースのコンピュータシステムでは、この記号は長らく利用できなかったため、括弧を使い(C)と表現するのが一般的だった。

Unicodeでは、U+00A9 © copyright sign (HTML: &#169; &copy;)として割り当てられている[21]。Unicodeには他にU+24B8 circled latin capital letter c (HTML: &#9400;)とU+24D2 circled latin small letter c (HTML: &#9426;)もある[22]。これらは、著作権マークがフォントや文字セットで利用できない場合(一部の朝鮮語コードページなど)に代替として使用されることがある。

Windowsでは、 Altを押しながら0 1 6 9を押すことで入力できる。Macintoshでは、オプションキーを押しながらgを押すことで入力できる。Linuxでは、compose O Cコンポーズキー英語版シーケンスで入力できる。

記号 Unicode JIS X 0213 文字参照 名称
© U+00A9 - &#xA9;
&#169;
COPYRIGHT SIGN

丸囲み文字としては、丸囲みCも参照。

関連する記号

  • コピーレフトマーク() - 著作権マークを左右反転させた記号であり、コピーレフトのシンボルとして使用される。法的には意味を持たない[23]
  • レコード著作権マーク(℗) - 大文字のPを丸で囲んだ記号。音声記録(フォノグラム)の著作権(原盤権)を表示するために使用される。
  • 登録商標マーク(®) - 大文字のRを丸で囲んだ記号であり、公式の事務所に登録されている商標(登録商標)を指定するために使用される。

脚注

  1. ^ これは丸の中がPのレコード著作権マーク(℗)で示される。
  2. ^ 合衆国法典第17編第401条 17 U.S.C. § 401
  3. ^ Universal Copyright Convention, Article III, §1. (Paris text, July 24, 1971.)
  4. ^ a b 安藤和宏 2018, p. 170.
  5. ^ Mann, Alastair J.; Kretschmer, Martin; Bently, Lionel (2010). “A Mongrel of Early Modern Copyright”. In Deazley, Ronan. Privilege and property: essays on the history of copyright. Open Book Publishers. ISBN 978-1-906924-18-8 
  6. ^ a b 安藤和宏 2018, p. 171.
  7. ^ Copyright Law Revision Study Number 7, page 6”. 合衆国著作権局. 合衆国政府印刷局. 14 June 2013閲覧。
  8. ^ Copyright Act of 1870, §97.
  9. ^ 1874 Amendment to the Copyright Act of 1870, §1.
  10. ^ Copyright Act of 1909, §18
  11. ^ a b Copyright Law Revision: Study 7: Notice of Copyright. Washington, D.C.: 合衆国政府印刷局. (1960). p. 11. http://www.copyright.gov/history/studies/study7.pdf 
  12. ^ a b An Act to amend title 17, United States Code, entitled "Copyrights", Pub.L. 83–743, 68 Stat. 1030 1954年8月31日制定.
  13. ^ Arguments before the Committees on Patents of the Senate and House of Representatives, conjointly, on the bills S. 6330 and H.R. 19853, to amend and consolidate the acts respecting copyright. June 6–9, 1906. 合衆国政府印刷局. (1906). p. 68. https://books.google.com/books?id=ZlA-AAAAYAAJ&pg=PA68&cd=2#v=onepage 
  14. ^ “Proposed Copyright Legislation”. The Writer XVIII (6): 87. (June 1906). https://books.google.com/books?id=fEhppVLGxR0C&pg=PA87&dq=%22proposed+copyright+legislation%22&lr=&ei=5XL3StfCJKO8zgSt2dW5Aw#v=onepage&q=%22proposed+copyright+legislation%22. 
  15. ^ a b 半田正夫 & 紋谷暢男 1989, p. 308.
  16. ^ a b c d e 安藤和宏 2018, p. 172.
  17. ^ a b Molotsky, Irvin (October 21, 1988). “Senate Approves Joining Copyright Convention”. The New York Times. https://www.nytimes.com/1988/10/21/arts/senate-approves-joining-copyright-convention.html September 22, 2011閲覧。 
  18. ^ 安藤和宏 2018, p. 173.
  19. ^ 合衆国法典第17編第401(b)条 17 U.S.C. § 401(b)
  20. ^ Circular 38A: International Copyright Relations of the United States. 合衆国著作権局. (2014). p. 2. https://copyright.gov/circs/circ38a.pdf March 5, 2015閲覧。 
  21. ^ https://www.unicode.org/charts/PDF/U0080.pdf
  22. ^ https://www.unicode.org/charts/PDF/U2460.pdf
  23. ^ Hall, G. Brent (2008). Open Source Approaches in Spatial Data Handling. Springer. p. 29. ISBN 3-540-74830-X  Additional 978-3-540-74830-4. See Open Source Approaches in Spatial Data Handling - Google ブックス, page 29

参考文献

  • 半田正夫紋谷暢男『著作権のノウハウ』(第3版増補版)有斐閣〈有斐閣選書〉、1989年。 
  • 安藤和宏『よくわかる音楽著作権ビジネス 基礎編』(5th Edition)リットーミュージック、2018年。ISBN 978-4-845-63141-4 

関連項目


C(シー)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/19 16:39 UTC 版)

C (アニメ)」の記事における「C(シー)」の解説

金融街資金無くなり、さらに金融街影響範囲内にある人間全ての未来をミダスマネー変換し尽くした時に発生する現象いわゆる市場閉鎖」であり、金融街と共に影響範囲内にある人間土地が「存在しなかった」ことになり消滅するまた、「C」により国が消滅するその影響を受け他国経済状況改変が起こる。これは、作中では『「C」連鎖』と呼ばれている。CalamityCatastropheChaosClashCrisisCollapse等の頭文字からアントレには「C」呼ばれる本編ではカリブシンガポール金融街「C」により消滅している。

※この「C(シー)」の解説は、「C (アニメ)」の解説の一部です。
「C(シー)」を含む「C (アニメ)」の記事については、「C (アニメ)」の概要を参照ください。

ウィキペディア小見出し辞書の「C」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ

「C」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。



Cと同じ種類の言葉


固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

「C」に関係したコラム

  • FXやCFDの三角形移動平均とは

    FXやCFDの三角形移動平均とは、移動平均の移動平均のことです。つまり、移動平均値を算出して、さらにその数値の移動平均値を算出します。なお、移動平均には単純移動平均を用います。三角形移動平均は、三角移...

  • FXの三尊とは

    FX(外国為替証拠金取引)の三尊とは、釈迦三尊の並びのようにローソク足が並んでいる状態のことをいいます。ヘッドアンドショルダー(head and shoulder)ともいいます。三尊は、三尊天井と逆三...

  • FXでダウ理論を用いるには

    ダウ理論(Dow Theory)とは、ダウ・ジョーンズの創設者のチャールズ・ダウ(Charles Henry Dow)が提唱した相場理論のことです。ダウ理論には以下の6つの基本法則があります。ファンダ...

  • FXの口座明細の証拠金や維持率とは

    FX(外国為替証拠金取引)の口座明細には、証拠金や維持率のような専門用語が使われています。ここでは、それらの用語の意味や計算方法について解説します。建玉可能金額(たてぎょくかのうきんがく)新規に建玉(...

  • FXのダブルトップでのエントリーポイントを見つけるには

    ダブルトップとは、チャートが「W」の字を上下反転したように形成されていることです。ダブルトップが形成されると、2つのエントリーポイントが発生します。下の図は、ダブルトップを形成したチャートです。ダブル...

  • FXやCFDのシャンデモメンタムとは

    FXやCFDのシャンデモメンタムとは、相場の売られ過ぎや買われ過ぎを判断するためのテクニカル指標のことです。シャンデモメンタムは、0を中心に-100から100までの値で推移します。シャンデモメンタムで...

辞書ショートカット

すべての辞書の索引

「C」の関連用語

検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Cのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
実用日本語表現辞典実用日本語表現辞典
Copyright © 2024実用日本語表現辞典 All Rights Reserved.
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
社団法人日本映像ソフト協会社団法人日本映像ソフト協会
Copyright © 2000-2024 Japan Video Software Association
丸ヱム製作所丸ヱム製作所
© 1998-2024 Maruemu Works Co,. Ltd. All rights reserved.
独立行政法人科学技術振興機構独立行政法人科学技術振興機構
All Rights Reserved, Copyright © Japan Science and Technology Agency
JabionJabion
Copyright (C) 2024 NII,NIG,TUS. All Rights Reserved.
Bio WikiBio Wiki
Bio Wikiの記事を複製・再配布した「分子生物学用語集」の内容は、特に明示されていない限り、次のライセンスに従います:
CC Attribution-Noncommercial-Share Alike 3.0 Unported
トランスプラント・コミュニケーション [臓器移植の情報サイト]トランスプラント・コミュニケーション [臓器移植の情報サイト]
© 1996-2008 Transplant Communication All Rights Reserved (Unless otherwise noted.)
皓星社皓星社
Copyright (C) 2024 株式会社皓星社 All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのC (改訂履歴)、C++ (改訂履歴)、C-- (改訂履歴)、ローマ数字 (改訂履歴)、上付き文字 (改訂履歴)、丸囲みC (改訂履歴)、著作権マーク (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのC (アニメ) (改訂履歴)、サンダークロスII (改訂履歴)、惑星連邦 (改訂履歴)、2010年中国における日本人死刑執行問題 (改訂履歴)、E・HERO ネオス (改訂履歴)、和音 (改訂履歴)、C*-環 (改訂履歴)、グラディウスNEO (改訂履歴)、PSR B1257+12 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2024 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2024 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2024 GRAS Group, Inc.RSS