No.2
- 回答日時:
> 例えばchar str[] = "0123456789";を文字としての123456789ではなく数値としての123456789として表示することは可能なのでしょうか?
えっと。。。
「表示する」というと画面や紙に表示するということですから文字列でなければなりません。
プログラム内部で数値として加減乗除を行うということであればint型ということになります。
文字列の数値を整数に変換するには標準関数のatoi(ASCII to integer)を使います。
https://ja.wikipedia.org/wiki/Atoi
参考まで。
No.3
- 回答日時:
char型は1バイトの文字を表し、質問のように配列にすることにより文字列を表すことができます。
メモリの話をすると、メモリ上には0と1だけがズラーっと登録されおり、各型を指定する場合は、どれくらいのサイズをどこで区切って、どのように解釈するかで見える形にしています。
なので、char型を数値として表すにはひと手間加える必要があるのです。
パッと調べた感じですが、原理を知るにはこちらがわかりやすいかも知れません。
https://marycore.jp/prog/c-lang/convert-or-cast- …
No.4
- 回答日時:
>苦しんでCを読んでchar型は文字列しか表せないとわかっていますが、
誤解されているようですね
一連の質問を見ての感想ですが
疑問に思ったCのプログラムをコンパイルしてアセンブラに変換して、それをご覧になれば、ここで質問するよりも、適切な回答が得られ納得される気がします。
No.5ベストアンサー
- 回答日時:
char型というものを何か勘違いしているのかもしれません
char型とは
1バイトの符号付整数。: -128 ~ 127を扱える型です
char='1'というのは数値で表すと49になります、1という意味ではありません
>また、文字列の中の一文字だけを数値として表示するにはどうすればよいですか?
char str[] = "0123456789";
'3'を数値として出力したいのでしたら
printf("%d\n", str[3]-'0');
か
printf("%d", str[3]-48)
と'0'か48を引いてあげれば良いです
たしかにそれでもできますが、出来れば、charで定義した数値の数列として、ようはchar str[] = "0123456789";の4の数値が
str[5]により数値4と表示したいのです。
No.6
- 回答日時:
No.3ですが、No.5さんへのお礼についてです。
それは不可能です。
No.5さんの説明の通り、No.3でも説明させていただいていますが、数値型の1と文字型の1は別の値になるので、ひと手間は必ず必要になります。
No.7
- 回答日時:
No4です
>逆に数値としてのcharの書き方と文字としてのcharの書き方を教えて欲しいですね。
数値としてのcharの書き方 a[0]=97; a[1]=0x61;
文字としてのcharの書き方 a[2]='a';
でしょうかね。
おまけ1 「数値として」「文字として」はあくまでも人の都合ですので、人にとってわかりやすい書き方というだけで、機械語に翻訳されたら同じになりますので念の為。
おまけ2 'a' と97が同じになるのは、私のPCの環境での話です。別のPC(文字コードが違う場合)は違う結果になります。
おまけ3 コンパイル結果
; a[0]=97;
;
?debug L 12
mov byte ptr [ebp-3],97
;
; a[1]=0x61;
;
?debug L 13
mov byte ptr [ebp-2],97
;
; a[2]='a';
;
?debug L 14
mov byte ptr [ebp-1],97
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
C言語のintとcharの違いってなんですか?単にメモリ領域が違うだけですか?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数内で設定したポインタ値に...
-
メモリ関連のエラーを取り除く...
-
C++Builder 2009 テキスト...
-
strcat関数を自作したいです
-
別ファイルの内容を検索したい...
-
char*を初期化したいのですが
-
ASCIIコードへの変換方法
-
char型にint型の数値を代入する。
-
ポインタで詰まりました;
-
C++のnewで確保したメモリーの...
-
VB.NETでファイル名順にファイ...
-
C言語 構造体の中に共用体を定...
-
関数から配列を返すには?
-
C言語のポインタに直接アドレス...
-
malloc呼び出し時のセグメンテ...
-
C言語 配列の長さの上限
-
構造体配列のソート
-
C言語の文字列?処理 strcpyやl...
-
C#で構造体の配列を持った構造...
-
2次元配列を戻り値とする関数?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
fstream型オブジェクトを関数の...
-
小数点入りの文字列をfloat型に...
-
char型にint型の数値を代入する。
-
const char* s1とただのchar s1...
-
new charとnew char[N]の違いは?
-
動的メモリの初期化方法について。
-
エクセルのMID関数は、C言語では?
-
C言語 strstrの実装
-
SetWindowTextについて。
-
char 文字列型 の表現範囲が-12...
-
文字列の途中から途中までを抽出
-
2次元配列の文字"列"の初期化方法
-
DWORDとcharの変換
-
C++17で、unsigned char * 配列...
-
C言語の文字リテラル中の16進文...
-
strcat関数を自作したいです
おすすめ情報