• ベストアンサー

超初心者ですが・・・。

何をバカな質問してるんだと思われるかも知れませんが、最近C++を学び始めたばかりなのでわからないのです。(本・その他いろいろなサイトを見て回りましたがいまだにわかりません。) 1.#include<iostream>と#include<iostream.h>の違い? 私が購入した本では前者の方で記述されていますが、プログラミング関係のサイトでは必ず後者の方の記述がされてますが、果たして違いはあるのでしょうか? 2.例えば void main(){ char c[11]; cout <<"貴方の名前は?"<<endl; cin >> c; cout << c <<"さんですね。"<<endl; } の場合、char c は10文字(日本語5文字)までが入るということですよね? でも実行して、10文字以上記入しても問題無く10文字以上表示されるのですがなぜなのでしょう?(borland5.5コンパイラで) ちなみにVC++でトライしてみたら、「重要なエラーが発生しました。マイクロソフトに連絡を~」といった エラーメッセージが表示されます。 こんな初めてつまづくと先が思いやられますが、完全に把握しないと先に進まないといった性格ですので、この2点お分かりの方、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

1. C++の(比較的)新しい仕様であるネームスペース(=名前空間)に関連します。 詳しいことをここでダラダラ書くよりも「C++ 名前空間」で検索した方が有益な情報が得られるでしょう。 結論だけ言うと「比較的新しいコンパイラではiostream.hではなくiostreamが推奨される」。 2. メモリ管理の方式の違いが実行結果に出ているのでしょう。 11バイトの領域に対して11バイト以上のデータを格納した場合の挙動は定義外です。 よって、実行結果は処理系(環境とコンパイラ)に依存します。 やってはいけないことをやった結果ですから、素直にエラーを出すVC++の方が好ましい結果だと言えます。 しかし、処理系依存ですからBC++の結果が“あきらかな間違い”とは言えません。

deia
質問者

お礼

回答ありがとうございました。 また何かありましたら宜しくお願い致します。

その他の回答 (1)

回答No.1

1.まず#includeとはそこに指定したファイルを埋め込む命令です。  つまり「"iostream.h"というファイルをそこに埋め込みなさい。」  と言う意味です。  なので"iostream"というファイルがあれば間違いではありませんが、  通常ヘッダーファイルを読み込むのであれば、  拡張子".h"が付いた"iostream.h"ですね。 2.char c[11];とした場合、  半角文字11文字が格納されます。  ⇒文字列の場合NULLを入れるので10文字が望ましいですが…。  それを超えた場合はコンパイラによってエラーとされるか、  強制的にメモリのどこかに書き込まれます。  いわゆるアクセスバイオレーションを引き起こす原因となります。

deia
質問者

お礼

回答ありがとうございました。 また何かありましたら宜しくお願い致します。

関連するQ&A