「C言語/データ型と変数の高度な話題」の版間の差分

削除された内容 追加された内容
→‎enum: enumの各要素には割り当てられる値は通常は整数値なので原理上はint型などとの計算や代入が可能ですが、ただし列挙型は仕様があいまいでありコンパイラの実装に依存するので、
→‎enum: C言語/制御文#switch文 2021年11月10日 (水) 05:13‎ からコード引用し、enum活用版に改造。
703 行
 
あるいは別の方法を試みようとして、たとえば外側をenumブロック、その内側に構造体ブロックを入れても、構造体の定義の際にメンバに int 型などを定義しなければいけなくなるので、コンパイル不能で動作しないか、もし仮にコンパイルできたとしても意図しない動作になりかねないので危険であろう。
 
;応用例
switch文と組み合わせることで、switch文を使う際のラベルの定数を考える手間を省略できます。
 
<syntaxhighlight lang="C" highlight=18 line>
#include <stdio.h>
 
int main(void) {
// 商品リスト
struct product_list {
char name[32]; // 商品名
int price; // 価格
};
 
struct product_list drinks[10]; // 構造体配列の宣言
 
// ここにenumあり
enum materialType {
Milk,
OrangeJuice,
vegi,
} varType;
 
for (int i = 0; i <= 2; i = i + 1) {
switch (i) {
case Milk: drinks[i] = (struct product_list){ "牛乳", 120 }; break; // case のラベルでenum変数の活用
case OrangeJuice: drinks[i] = (struct product_list){ "オレンジジュース", 240 }; break; // 以下、同様
case vegi: drinks[i] = (struct product_list){ "野菜ジュース", 190 }; break;
default : break;
}
}
 
for (int temp = 0; temp <= 2; temp = temp + 1) {
printf("商品『%s』の値段は%d 円\n", drinks[temp].name, drinks[temp].price);
}
}
 
</syntaxhighlight>
 
実行結果
<pre>
商品『牛乳』の値段は120 円
商品『オレンジジュース』の値段は240 円
商品『野菜ジュース』の値段は190 円
</pre>
 
===タグ===