「C言語/記法」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎選択文: {{See|C言語/制御文#if文|C言語/制御文#switch文|C言語/制御文#選択文}}
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎定数: cleanup
タグ: 2017年版ソースエディター
199 行
 
=== 定数 ===
定数( ''Constraints'' )とはプログラム実行時に一定の値しかもたない数である
変数の値がプログラム実行中に変更される場合もあるのに対して、定数の値はプログラム実行中を通して一定である
 
定数には整数定数、浮動小数点定数、列挙定数、文字定数がある。
; 整数定数
: 整数を記述するための定数
: 10進数表記のほか、2進数表記や8進数表記や16進数表記を使うことができます
: 2進数表記では接頭辞として0bあるいは0Bを付け、8進数表記では接頭辞として0を付け、16進数表記では接頭辞として0xあるいは0Xを付けます
:; 例
:: 42, 0b101010, 052, 0x2a
; 浮動小数点定数
: 浮動小数点数を記述するための定数
: 10進数の小数点数表記のほか、有効数字部と指数部あるいは、16進数浮動小数点で表記することができます
:; 例
:: 3.14, 3.14e+00, 0x1.91eb851eb851fp+1
; 列挙定数<ref>『JISX3010:2003』p.43「6.4.4.3 【列挙定数】」</ref>
; 列挙定数
: 列挙定値であるがユーザによって宣言された識別子で、ユーザが定義 <code>int</code> で。{{See also|C言語/データ型と変数#enum}}
; 文字定数<ref>『JISX3010:2003』p.43「6.4.4.4 文字定数」</ref>
; 文字定数
: 文字を記述するための定数である。半角英数記号や制御文字などが記述できます
:; 例
:: 'C',
 
 
*次に主な定数を表にまとめた。
{|class="wikitable"
|+ 定数の種類と記法<ref>『JISX3010:2003』p.39「6.4.4 定数」</ref>
!定数の種類!!進数!!記法正規表現!!例
|-
|rowspan="4"|整数定数||2進数||「0b」あるいは「0B」に続く<ref>2進数整数定数はC23で追加予定で規格としては未成ですが、clang/gcc/MSVCなど多くのコンパイラで使用可能です。</ref><ref name="jtc1-sc22-wg14-n2596-6.4.4.1">{{cite book
| url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2596.pdf
| title= N2596 working draft — December 11, 2020 ISO/IEC 9899:202x (E)
| page=51, §6.4.4.1 Integer constants
| publisher = [http://www.open-std.org/jtc1/sc22/wg14/www/projects ISO/IEC JTC1/SC22/WG14]}}</ref>
|/0[bB][01]+/
|0b10011010010 // 10進数で1234のこと
|-
<!--||-->|8進数|| /0」に続く8進数<ref>『JISX3010:2003』p.39「6.4.4[0-7]*/ 定数」</ref>||02322 // 10進数で1234のこと
|-
<!--||-->|10進数||10進数 /[1-9][0-9]*/ || 1234
|-
<!--||-->|16進数||「0x」あるいは「0X」に続く16進数 /0[xX][0-9A-Fa-f]+ ||0x4d2 // 10進数で1234のこと
|-
|rowspan=4|浮動小数点定数
|rowspan="2"|浮動小数点定数||10進数||10進整数部と「.」と10進小数部<br>10進有効数字部と「e」と10進指数部(10のべき乗)|| 3.14<br>1e-3 // 0.001のこと
|rowspan=2|10進数
|/[0-9]\.[0-9]*/ || 3.14
|-
|/[0-9]+e[-+]*[0-9]+/|| 1e-3 ⇒ 0.001
<!--||-->|16進数||「0x」あるいは「0X」に続く16進整数部と「.」と16進小数部と「p」と10進指数部(2のべき乗)<hr>「0x」あるいは「0X」に続く16進有効数字部と「p」と10進指数部(2のべき乗)||0x1.91eb851eb851fp+1//3.14
|-
|rowspan=2|16進数
|文字定数|| - ||「'(一重引用符)」で囲まれた文字(単純文字定数)<hr>「L」に続く「'(一重引用符)」で囲まれた文字(ワイド文字定数)||'a'<hr>L'a'
|/0[xX][0-9A-fa-f]+\.[0-9A-fa-f]*[fFlL]*p[-+]*[0-9]+/
| 0xbad.beefp3
|-
|/0[xX][0-9A-fa-f]+\.[0-9A-fa-f]*[fFlL]*p[-+]*[0-9]+/
| 0xbeep+3 ⇒ 24432.0
|-
; |文字定数|
|rowspan=2| 文字
|/'.'/[[C言語/文字と文字列#バックスラッシュのエスケープについて|エスケープシーケンス]]可能(単純文字定数)|| 'a'
|-
|/L'.'/[[C言語/文字と文字列#バックスラッシュのエスケープについて|エスケープシーケンス]]可能(ワイド文字定数)
|| L'a'
|}
 
*整数定数の接尾辞( ''integer-suffix'' )
整数定数に接尾を付けることで、符号の有無と型を指定することができます<ref>『JISX3010:2003』p.39「6.4.4.1 整数定数」</ref>。
 
# 接尾がなければ、整数定数の型は (signed) int です。
# 接尾が U あるいは u ならば、符号なしです。
# 以下のいずれかなら形が指定されます。
## 接尾が L あるいは l ならば、long です。
## 接尾が LL あるいは ll ならば、long long です(Ll やlL lL は不可)。
 
2 と 3 は併用でき、前後を問いません(168UL と 168LU は同じ意味)
 
*浮動小数点定数の接尾辞( ''floating-suffix'' )
浮動小数点定数に接尾を付けることで、その型を指定することができます
浮動小数点定数の型は、接尾なしで型double、接尾f又はFで型float、l又はLで型long doubleである<ref>『JISX3010:2003』p.41「6.4.4.2 浮動小数点定数」</ref>。
 
<syntaxhighlight lang=c>
//例 変数に定数の値を代入する。
#include <string.h>
 
//例 ;変数に定数の値を代入する例:<syntaxhighlight lang=c>
int main(void) {
{
int i = 1234; // 整数型変数 i を整数定数 1234 で初期化
int i;
double d = 3.14; // 浮動小数点型変数 d を浮動小数点定数 3.14 で初期化
i=1234;//iに整数定数1234を代入する。
char c = 'C'; // 文字変数 c を文字定数 'C' で初期化
double d;
d=3.14;//dに浮動小数点定数3.14を代入する。
char c;
c='a';//cに文字定数aを代入する。
}
</syntaxhighlight>