No.2ベストアンサー
- 回答日時:
>enum というユーザー定義変数を
変数ではないでしょう。
むしろ定数かと。
>enum でなくても配列を使えば出来そうなものが多いのですが
具体的になにがあります?
ちなみに配列ではありませんので誤解なきよう。
http://homepage2.nifty.com/well/enum.html
とか、いい感じに説明されていますかね。
defineだとただの置き換えなので何でも設定できてしまう。とか型チェックができない。とかの問題があります。
私自身、最近使ったやり方では…テーブルのインデックス用に使いましたね。
早速お返事いただきまして、ありがとうございます。
今までは説明を読んだだけでそう感じていたのですが、実際に enum を使って書かれたプログラムを配列で出来るかどうかやってみたところ、これがまったく難しいことであるということがわかりました。
下にそのプログラム例を挙げてみます。
#include <stdio.h>
/* To shorten example, not using argp */
int main ()
{
enum planets
{
Mercury,
Venus,
Earth,
Mars,
Jupiter,
Saturn,
Uranus,
Neptune,
Pluto
};
enum planets planet1, planet2;
planet1 = Mars;
planet2 = Earth;
if (planet1 > planet2)
puts ("Mars is farther from the Sun than Earth is.");
else
puts ("Earth is farther from the Sun than Mars is.");
return 0;
}
このプログラムと同じ結果を、配列を使って出そうとしましたが、配列の要素である惑星の名前(文字列)からそのインデックスを求める必要があり、enum のように簡単ではないとわかりました。
正直に言いまして、enum は本当にざっと読みすごしただけでしたが、今回その効果の一端がわかったような気がします。 文字の並び(普通に言う文字列ではなくて)が決まった値を持っているというところがポイントなのでしょうね。
ご紹介頂いたサイトなどにも行って、また勉強したいと思います。
No.1
- 回答日時:
>サンプルコードなどを見ても、 enum でなくても配列を使えば出来そうなものが多いのですが、この型の変数はどう使えば効果的なのでしょうか。
配列にenumの変わりをさせるというのが全く想像できないんですが。
enumそのものを勘違いされていませんか?
enumは、限定的な値を持つ型を定義するものなんですが。
enum POWER_STATUS {
ON,
OFF,
};
とか。
早速お返事いただきまして、ありがとうございます。
回答者さんのおっしゃるとおり、enum をまったく勘違いしていたようです。
enum を使ったプログラムを配列で書けるというのは、今までそのようなものを自分で書いてそう感じていたということではなく、サンプルなどを見てそう感じていただけです。実際にやってみたところ、これがまったく難しいことであるということがわかりました。
下にそのプログラム例を挙げてみます。
#include <stdio.h>
/* To shorten example, not using argp */
int main ()
{
enum planets
{
Mercury,
Venus,
Earth,
Mars,
Jupiter,
Saturn,
Uranus,
Neptune,
Pluto
};
enum planets planet1, planet2;
planet1 = Mars;
planet2 = Earth;
if (planet1 > planet2)
puts ("Mars is farther from the Sun than Earth is.");
else
puts ("Earth is farther from the Sun than Mars is.");
return 0;
}
このプログラムと同じ結果を、配列を使って出そうとしましたが、配列の要素である惑星の名前(文字列)からそのインデックスを求める必要があり、enum のように簡単ではないとわかりました。
正直に言いまして、enum は本当にざっと読みすごしただけでしたが、今回その効果の一端がわかったような気がします。 文字の並び(普通に言う文字列ではなくて)が決まった値を持っているというところがポイントなのでしょうね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- その他(プログラミング・Web制作) MicroPython変数、関数について 2 2023/06/18 13:21
- Excel(エクセル) ExcelのFSO(ファイルシステムオブジェクト)について学びたいのですが。。。 5 2022/12/15 18:06
- 高校 中学3年間不登校でした。勉強方法を教えてください。 通信制高校に入学する予定です。 完璧にじゃなくて 8 2023/08/06 15:56
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 高校 最近考えついた勉強方法についてご意見をいただきたいです。 私は文系の高校生で、将来英語を使った職に就 1 2023/02/04 21:28
- IT・エンジニアリング c言語とjavaの需要について 3 2022/06/23 22:59
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- 数学 C言語と将来性 7 2022/10/13 16:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Dir関数で読み取り順を操作でき...
-
構造体配列の一部初期化!!!
-
VB6で、一次元配列と二次元配列...
-
VBAでMODE関数をつくる
-
VB.NETの配列とArrayListについ...
-
Excel2010のinputboxで複数デー...
-
C#でbyte配列から画像を表示さ...
-
定数配列の書き方
-
配列数とメモリの使用率
-
C#,繰り返し処理での最大値の取...
-
母親の血液中の胎盤遺伝
-
配列の要素がすべてカラかどう...
-
VB6でやると構造体の配列になる...
-
2次元配列の初期値
-
現在コピーされているものによ...
-
VBA Dowhile 判断条件に動的配...
-
VBA ReDim と ReDim Preserve ...
-
ACCESSであえてデータを配列形...
-
レコードセットの中身を配列に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報