• ベストアンサー

文字列としての数

ものすごく初歩的な質問かもしれません。C言語を始めコンピューターでは、単なる数値と文字列としての数値の事実上のデータ(2進数とか?)は全く違うものという捕らえ方よいのでしょうか?又、エクセル などでは「’」をつけると数字も文字列として認識されるということですが、この場合の電算機上の認識は先程の認識法とは別物なのでしょうか?この辺は企業秘密かも知れませんが・・・

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

  • ベストアンサー
  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

数値は定数(値)としての数で 1234567890 などのことです。 因みに数値では上位桁の 0 は自動で省略されたりします。 (Cなどでは 0 から始まる数値定数は8進数として処理されますけど) 一方、数字というのは数を表す単なる文字です。 文字なので数字には文字コードが割り当てられています。 "0"は0x30です。 Excelでは標準ではセル内のデータが数字だけであった場合は自動で 数値に変換(数値として認識)してしまいますので先頭の0は消えます。 先頭にアポストロフィーまたはセルの書式を文字列にした場合は 数値だけでも数字として認識しますので先頭の0は消えません。 この辺り結構、難しいですよね。 言語などによって数値と数字を別と見なすか同一として見なすかが 違います。 (正確には同一と見なしている言語では内部で数値と数字を必要に 応じて自動で変換しているだけですが)

rongryu123
質問者

お礼

ご丁寧にどうも有り難う御座います。とてもわかりやすかったです。ただエクセルでもいろいろいじっていて、気になってきたのです。

その他の回答 (1)

回答No.1

ご存知のとおりコンピュータは内部的には数値しか扱えませんので、 内部では文字列も数値の列として表現されています。 しかし、エクセルやワードといったユーザに見える部分からはそれが直接見えないようになっています。 文字列と数値を区別するかはその言語の仕様によって異なります。 C言語は一応は文字と数の区別はつける言語(強い型付けの言語)ですが、 文字やポインタを数値としても扱えてしまったりしてその区別は中途半端です。 エクセルのVBAは文字や数値の区別がない言語(弱い型付けの言語)で、 エクセルでは自動的に数値と文字が変換されていると考えるとよいかもしれません。 本質的に文字列と数値は異なるものなのに、その解釈をコンピュータがユーザに知らせずに勝手に変えてしまうので ご質問者のかたのような混乱と誤解を招いています。 そのような言語ではコンピュータの代わりにユーザがその区別をつけなければならないのです。 「型」についてちゃんと理解したいのであれば、JavaやC#といったもっと型の厳格な言語を学んでみるとよろしいかと思います。 企業ヒミツとかではありません。 入力された文字がどう扱われるかわからないと何もできませんから、 それらの仕様はむしろ公開されているはずです。

rongryu123
質問者

お礼

有難う御座いました。よく調べてみます。やはり、有る程度言語の習得は必要なのでしょうね。

関連するQ&A