2009年03月14日
川俣晶の縁側ソフトウェア技術雑記total 5007 count

C言語のconstとenumのまとめ

Written By: 川俣 晶連絡先

 自分のためのメモです。

 典拠はいちおう「プログラム言語C JIS X 3010:2003 (ISO/IEC 9899:1999)」です。(あまり厳密には読んでいないので、間違っている可能性あり)

constとは何か §

  • 左辺値に書くことができない制約を付ける修飾語
  • constant(定数)を連想させるconstキーワードを使うが、定数ではない。たとえば、const int a = 0;と書いた場合、0が格納されている変数aの実体は作成される。左辺値に書けないため、通常の方法では値を変更できないが、普通ではない方法を使えば値は変更できてしまう
  • const int * pは、*pを左辺値に書けないポインタ変数を宣言する。pは左辺値に書ける
  • int * const pは、pを左辺値に書けないポインタ変数を宣言する。*pは左辺値に書ける
  • const int * const pは、p, *pの双方を左辺値に書けないポインタ変数を宣言する

enumとは何か §

  • intと相互変換可能な定数値を定義する
  • enum型として宣言した変数に整数を代入することは問題なく可能。その値がenum foo型で宣言されている値ではなくとも問題はない
  • 整数として宣言した変数に、enum型の値を代入することは問題なく可能
  • 列挙を連想させるenumキーワードを使うが、実質としては定数に近い。しかし、enum型で宣言された変数は整数型の変数に近い
  • ただし、enum型はintと同じビット数の表現力を持つとは限らないので、任意の整数を入れてそれがそのまま取り出せるかは分からない

感想 §

 自分の中でもやもやして的確な説明ができなかったので改めて調べてみると、かなりねじれていました。これは、もやもやして当然ですね。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2009年
03月
28日
C#を病的に嫌う者が出現する理由を示す「Pascal踏み絵」仮説
3days 0 count
total 7454 count
【技術雑記】の前のコンテンツ
2009年
03月
11日
C#において、x++;はx += 1;に置き換えられるが、x = x + 1;に置き換えられるとは限らない
3days 0 count
total 6715 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20090314173018
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.33 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.