[解決済み] C言語は強い型付けか?
質問
引用 ウィキペディア :
<ブロッククオートよく使われる2つの言語 多くの種類の暗黙の変換をサポートする CとC++があり、これらは暗黙的な変換をサポートしています。 これらは弱型化言語であると主張されることがある。 弱型化言語であると主張されることがある。しかし これらの言語が弱型言語であると主張する人もいる。 型が異なるオペランドをどのように 異なる型のオペランドを 両者は強い型付け言語と見なすべきであると を強く型付けされた言語と見なすべきだという意見もある。
もっと明確な答えはないのでしょうか?
どのように解決するのですか?
Strongly typedとweakly typedは、技術的に広く合意された意味を持たない用語です。 明確に定義された意味を持つ用語は次のとおりです。
-
動的型付け は、型が実行時に値に付加されることを意味し、異なる型の値を混ぜようとすると "実行時型エラー"を引き起こす可能性があります。 例えば、Schemeでtrueに1を足すために
(+ 1 #t)
と書くとエラーになります。 このエラーは、問題のあるコードを実行しようとした場合にのみ発生します。 -
静的型付け とは、コンパイル時に型がチェックされ、静的な型を持っていないプログラムはコンパイラに拒否されることを意味します。 例えば、MLでtrueに1を加えようとする場合、次のように書きます。
1 + true
と書いて,trueに1を加えようとすると,(おそらく不可解な)エ ラーメッセージが表示されて,プログラムが拒否されます. たとえそのコードが実行されることがなくても,エラーは必ず出ます.
柔軟性をどれだけ重視するか、実行時エラーをどれだけ心配するかによって、人によって好むシステムが異なります。
時々、"strongly typed"が静的に型付けされたものという意味で緩く使われ、"weakly typed"が動的に型付けされたという意味で間違って使われることがあります。 強く型付けされた(strongly typed)」という用語は、「型付けシステムを回避したり破壊したりすることはできない」という意味で、「弱く型付けされた(weakly typed)」という用語は、「型付けシステムに抜け穴があった(work out there in the type system")」という意味で使われるとよいでしょう。 逆に言えば、静的な型システムを持つほとんどの言語には抜け穴があり、動的な型システムを持つ多くの言語には抜け穴がないということです。
これらの用語はどれも、言語で利用可能な暗黙の変換の数とは一切関係がありません。
プログラミング言語について正確に話したいのであれば、" strongly typed" と " weakly typed" という用語は避けたほうがよいでしょう。 C言語は静的型付けされた言語ですが、抜け道がたくさんある言語だと言えるでしょう。 抜け穴の1つは、どんなポインタ型も他のポインタ型に自由にキャストできることです。 また、2つのメンバを持つCのユニオンを宣言することで、好きな2つの型の間に抜け穴を作ることができます。
静的型付けと動的型付けについて詳しくは なぜ解釈されるラングはほとんどducktypedであり、コンパイルされたものはstrong-typingであるのか? .
関連
-
_CRT_SECURE_NO_WARNINGS エラーメッセージ、解決方法
-
[解決済み] munmap_chunk(): 無効なポインタ
-
[解決済み] C 言語で const char* を char* に変換するには?
-
[解決済み] C - Setデータ構造を実装するには?
-
[解決済み] printfは、フォーマット文字列の中に改行がないと、呼び出し後にフラッシュしないのはなぜですか?
-
[解決済み] 強型付け言語と静的型付け言語の違いは何ですか?
-
[解決済み] .aファイル、.soファイルとは何ですか?
-
[解決済み】Pythonは強型付けされていますか?
-
[解決済み] 弱型付け言語に関する明らかな矛盾の解明を求めて
-
[解決済み] Objective-Cには強い型付けのコレクションがありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
error: '.' トークンの前にunqualified-idを指定する必要があります。
-
initializer element is not constant "というエラーが表示されるのですが?
-
未定義の `__isoc99_sscanf' への参照
-
警告: 'struct XXX' はパラメータリストの内部で宣言されています。
-
[解決済み] C言語でchar配列をコピーする方法は?
-
[解決済み] flexible array member not at end of structエラーの原因は何ですか?
-
[解決済み] Linuxカーネルにおけるcontainer_ofマクロの理解
-
[解決済み] mallocとcallocの違い?
-
[解決済み] C言語標準に準拠した構造体の初期化方法
-
[解決済み] 講師が書いたC言語のファイルは、なぜ最初の行に#が一つ付いているのですか?