プログラミング言語 Ⅰ 実習を含む 計算機言語 Ⅰ 計算機言語演習 Ⅰ 情報処理言語 Ⅰ 実習を含む 1 先週の復習 1 explorer の使い方 ID: 810614
Download The PPT/PDF document "C 言語入門 第 2 週" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
C言語入門第2週
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
1
Slide2先週の復習1explorer の使い方
2
Slide3explorer.exe
ファイルの操作を行うソフトデスクトップもエクスプローラーの一部
ここ
に「
explorer
」と入力し
ENTER
キーを叩いても
explorer
が表示できます
これが「
explorer
」
デスクトップ
も
「
explorer
」
コントロールパネルも
「
explorer
」
3
Slide4ポップアップ(popup)メニューの表示
表示させたい場所でマウス右クリック例えばデスクトップの何もない場所でメニューの右にある三角印サブメニューが出る
ポップアップメニュー
サブメニュー
4
Slide5ファイルの作成とオープン
explorer の作成したい場所でマウス右クリックポップアップメニュー出る新規作成→テキストドキュメント
出来たファイルは
適当に名前を付けても良い
マウス左ダブルクリック
→
メモ帳で開かれる
5
Slide6フォルダの作成作成したい所で右クリックポップアップメニューで
→新規作成→フォルダ「新しいフォルダ」ができた
6
Slide7フォルダを開く
フォルダアイコンの上で左ダブルクリックexplorer が開く
開いているフォルダ名
7
Slide8ファイルの移動
「テキストドキュメント」を「新しいフォルダ」の中に移動「ドラッグ&ドロップ」すれば良い
ドラッグ&ドロップ
移動しました
8
Slide9ファイルのコピー
Ctrl を押したまま 「ドラッグ&ドロップ」
コピーができました
9
Slide10ファイルの選択
ファイルを単純にクリックファイル左側のチェックボックスをクリックファイルを囲むようにドラッグ(複数選択)
選択された
10
Slide11ファイルの削除
選択したファイル上で右クリック→削除ファイルを選択して「Delete」キーでも良い
ファイルが消えた
11
Slide12CUI作業環境 (terminal)フォルダをSHIFT+右クリック
cmd.exe
m
intty
+ bash
12
Slide13cmd と bash の主なコマンド
cmdbash
マニュアル
help [
コマンド名
]
man
[
コマンド名
]
ファイル一覧
dir
lsファイルの表示type ファイル名
cat [ファイル名]
ディレクトリ移動
cd ディレクトリ名cd [ディレクトリ名
]ディレクトリ表示
cd
pwdファイルコピーcopy コピー元 コピー先
cp
コピー元 コピー先ファイル移動move コピー元 コピー先
mv
コピー元 コピー先
ファイル削除
del
ファイル名
rm
ファイル名
↑
tab
|
←
→
|
↓
ファイル名の補完
コマンド履歴の再利用
13
Slide14ファイルの場所の記述方法(パス)以下の図のフォルダ構成を仮定する
作業フォルダは CLangI2014
教科書
pp.30-31.
14
Slide15作業フォルダcurrent directory と言うこともある
ここに
表示
されているの
が
作業フォルダ
15
Slide16Windows の絶対パス、相対パスフォルダの階層を \ で区切る
現在の作業フォルダは以下の場所C:\Users\kou\Desktop\CLangI2014絶対パスはルートデバイスを基準にC:\Users\kou\Desktop\CLangI2014\week1\hello.cC:\Users\kou\Desktop\CLangII2014\week1\hellogui.c相対パスは現在の作業フォルダを基準に
week1\
hello.c
..\CLangII2014\week1\
hellogui.c
教科書
pp.30-31.
16
Slide17Cygwin の絶対パス、相対パスディレクトリの階層を / で区切る
現在の作業ディレクトリは以下の場所/cygdrive/c/Users/kou/Desktop/CLangI2014絶対パスはルートディレクトリ / を基準に/cygdrive
/c/Users/
kou
/Desktop/CLangI2014/week1/
hello.c
/
cygdrive
/c/Users/
kou
/Desktop/CLangII2014/week1/
hellogui.c相対パスは現在の作業ディレクトリを基準にweek1/hello.c../CLangII2014/week1/hellogui.c17
Slide18特別なフォルダ名「..」1
つ親のディレクトリを意味する「.」現在のディレクトリを意味するUNIX では実行ファイルの検索パスに作業ディレクトリが含まれない作業ディレクトリ
内
にある実行ファイルを実行する際
./
を実行ファイル名の前に付ける必要がある
18
Slide19補足フォルダとディレクトリは同じ概念Windows
流ではフォルダと呼ぶUNIX 流ではディレクトリと呼ぶ/cygdrive は cygwin 特有の仮想ディレクトリWindows のドライブが配置されている
通常
UNIX
ではパスに
: (
コロン
)
を使わないため
ネットワークドライブもアクセス出来る
UNC
表記を用いる\\fs.cc.yamaguchi-u.ac.jp\YUアカウント名//fs.cc.yamaguchi-u.ac.jp/YUアカウント名19
Slide20コマンドの検索パス環境変数 PATH に設定されたパスからコマンドを探して実行する
cmd での確認方法複数のパスは ; (セミコロン)で区切って与える
bash
での
確認方法
複数のパスは
:
(
コロン
)で区切って与える
> echo %PATH%$
echo $PATH
20
Slide21ファイル拡張子の表示Windows 8 以降explorer.exe
から「表示」→「ファイル名拡張子」→ON
ファイル名末尾に
.
○○○と表示される
教科書
p.27.
21
Slide22ファイル拡張子の表示Windows 7 以前explorer.exe から
「Alt」→「ツール」→「オプション」→「表示」→「登録されている拡張子は表示しない」→OFF
Alt
叩くとメニュー出る
ファイル名末尾に
.
○○○と出る
教科書
p.27.
22
Slide23ファイル拡張子とは?ファイルの種類を表しているアプリケーションとの関連付けに用いられる
実行ファイルは .exe や .comテキスト文書は .txtWord2007以降は .docx それより前は .doc
Excel2007
以降は
.
xlsx
それより前は
.
xls
PowerPoint2007
以降は .pptx それより前は .ppt圧縮ファイルは .zip .lzh .tgz .cab 等々
等々変更すると開けなくなる普通は変更する必要はない
メール等で添付されて来たファイルには注意文書ファイルに見えて実行ファイル(実はウィルス)ということも23
Slide24C コンパイラによるコンパイルcmd.exe から bcc32 で行った例
C:\Users\kou\Desktop\CLangI2014>dir /Bhello.c
C:\Users\kou\Desktop\CLangI2014>bcc32
hello.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
hello.c
:
警告
W8070
hello.c
6:
関数は値を返すべき
(
関数 main )Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 BorlandC:\Users\kou\Desktop\CLangI2014>dir /Bhello.c
hello.exe
hello.objhello.tds
C:\Users\kou\Desktop\CLangI2014>hellohello, world
ファイル一覧の表示
コンパイル
ファイル一覧の表示
作成した実行ファイルを実行
教科書
pp.36-42.
24
Slide25C コンパイラは何をしているのか?デバッグ情報付きコンパイルし逆アセンブル.rdata
セクション部分$ gcc -g
hello.c
$
objdump
-d -S -s
a.exe
a.exe:
ファイル形式
pei-x86-64
...
セクション
.
rdata の内容: 100403000 63796767 636a2d31 342e646c 6c005f4a cyggcj-14.dll._J
100403010 765f5265 67697374 6572436c 61737365 v_RegisterClasse
100403020 73000000 00000000 00000000 00000000 s...............
100403030 68656c6c 6f2c2077 6f726c64 00000000 hello, world.... 100403040 4743433a 2028474e 55292034 2e382e31 GCC: (GNU) 4.8.1...
セクション .text
の逆アセンブル:
...00000001004010d0 <main>:#include <stdio.h>
main()
{
埋め込まれた文字データ
文字データの配置アドレス
文字データの
16
進表現
教科書
p.17.
25
Slide26C コンパイラは何をしているのか?.text セクション部分
セクション .text の逆アセンブル
:
...
00000001004010d0 <main>:
#include <
stdio.h
>
main()
{
1004010d0: 55 push %
rbp
1004010d1: 48 89 e5
mov %rsp,%rbp
1004010d4: 48 83
ec 20 sub $0x20,%rsp
1004010d8: e8 73 00 00 00 callq 100401150 <__main> printf
("hello, world\n"); 1004010dd: 48 8d 0d 4c 1f 00 00 lea 0x1f4c(%rip),%
rcx #
100403030 <.rdata> 1004010e4: e8 77 00 00 00
callq 100401160 <puts>
} 1004010e9: 48 83 c4 20 add $0x20,%rsp 1004010ed: 5d pop %rbp 1004010ee: c3
retq
1004010ef: 90
nop
...
アセンブラコードを
アセンブルして得られた
マシン語
のバイトコード
C
言語を
コンパイルして得られた
アセンブラコード
配置アドレス
26
Slide27C言語入門(変数と定数)27
Slide28基礎知識28
Slide29テキスト編集系ソフトの種類テキストエディタ (メモ帳,
秀丸, etc,,,)基本的にプレーンな文字情報のみ、装飾なしリッチテキストエディタ (ワードパッド, etc,,,)字体、色、サイズ等の装飾が可能にワードプロセッサ (Word, 一太郎
,
etc
,,,)
更に高度な、文書作成支援機能
DTP
ツール
(InDesign, Publisher,
etc
,,,)印刷用の版下作成、特に割付へ特化
29
Slide30プログラミング向けテキストエディタの機能構文解析機能
シンタックスハイライト機能行番号表示機能入力補完機能マクロ機能正規表現対応の検索機能タグジャンプ機能等々
30
Slide31テキストエディタ窓の杜オフィス / 文書
作成 / テキストエディターhttp://www.forest.impress.co.jp/library/nav/genre/offc/document_txteditor.html学習・プログラミング / プログラミング / プログラム向けエディター http://
www.forest.impress.co.jp/library/nav/genre/stdy/program_progeditor.html
Vector
Windows
/
文書作成
/
テキストエディタ
http://www.vector.co.jp/vpack/filearea/win/writing/edit
/31
Slide32テキストエディタサクラエディタhttp://sakura-editor.sourceforge.net/
xyzzyhttp://xyzzy-022.github.io/32
Slide33統合開発環境Microsoft Visual Studiohttp://www.visualstudio.com/ja-jp/
EclipsePleiades - Eclipse プラグイン日本語化プラグインhttp://mergedoc.sourceforge.jp/NetBeanshttps://ja.netbeans.org/
33
Slide34コメントプログラムとしては解釈されない後で読む人用に注釈をしておく機能/* ~ */
の間がコメント// から行末までがコメント教科書 p.46.
#include <
stdio.h
>
main()
{
/*
ここがコメント
*/
printf
("hello, world\n");
//
ここもコメント
}
緑の部分がコメントとして
扱われている34
Slide35SI接頭辞
名前
記号
乗数
キロ
(kilo)
K
1000
1
=10
3
メガ
(mega)
M
1000
2
=10
6
ギガ
(giga)
G
1000
3
=10
9
テラ
(tera)
T
1000
4
=10
12
ペタ
(peta)
P
1000
5
=10
15
エクサ
(exa)
E
1000
6
=10
18
ゼタ
(zetta)
Z
1000
7
=10
21
ヨタ
(yotta)
Y
1000
8
=10
24
35
Slide362進接頭辞(IEC/IEEE)
名前
記号
乗数
キビ
(kibi)
Ki
1024
1
=2
10
メビ
(mebi)
Mi
1024
2
=2
20
ギビ
(gibi)
Gi
1024
3
=2
30
テビ
(tebi)
Ti
1024
4
=2
40
ペビ
(pebi)
Pi
1024
5
=2
50
エクスビ
(exbi)
Ei
1024
6
=2
60
ゼビ
(zebi)
Zi
1024
7
=2
70
ヨビ
(yobi)
Yi
1024
8
=2
80
36
Slide37bit と byteb – bit
2進数 1 桁通信速度や IC の容量表記等例:100Mbps (100 Mega bits per seconds)
B – Byte
8bit (
半角英数
1
文字分に相当
)
記憶メディアの容量表記等
例
:
32GB (32 Giga Bytes)0
1
1bitの記憶素子には2進数
の1桁つまり0 または 1
のみ記憶できる
0
0
0
1
1
0
1
1
1bit
毎では
単位が小さ過ぎて使い辛い
通常
は
8
桁を
1
まとめにして扱う
1bit
8bit
= 1byte
8bit = 1byte
は
通り
の
整数を表現
可能
符号なし
:
符号あり
:
教科書
pp.50-55.
37
Slide3816進数
2進数10進数16進数2
進数
10
進数
16
進数
0b0000
0
0x0
0b1000
8
0x8
0b00011
0x1
0b1001
90x9
0b0010
2
0x20b1010
10
0xa0b00113
0x3
0b1011
11
0xb
0b0100
4
0x4
0b1100
12
0xc
0b0101
5
0x5
0b1101
13
0xd
0b0110
6
0x6
0b1110
14
0xe
0b0111
7
0x7
0b1111
15
0xf
2
進数
4
桁 →
16
進数
1
桁
2
進数
8
桁 →
16
進数
2
桁
2
進数
16
桁 →
16
進数
4
桁
2
進数
32
桁 →
16
進数
8
桁
2
進数
64
桁 →
16
進数
16
桁
2
進数
4
桁 →
16
進数
1
桁 に対応
2
進数から変換するとキリが良い
バイト単位のデータを表す際
、
読み易い
例
: 0b0001001000110100
= 4660 = 0x1234
教科書
pp.50-55.
38
Slide398 bit 整数の N 進数の表現
2進数符号なし10進数符号あり10進数
16
進数
0b00000000
0
0
0x00
0b00000001
1
1
0x01
0b00000010
2
2
0x02
0b000000113
3
0x03
:::
:
0b01111111127127
0x7f
0b10000000
128
-128
0x80
:
:
:
:
0b11111100
252
-4
0xfc
0b11111101
253
-3
0xfd
0b11111110
254
-2
0xfe
0b11111111
255
-1
0xff
符号あり整数の場合は最上位ビットを符号ビットとして扱う
(2
の補数表現
)
教科書
pp.50-55.
符号ありは
ここ
で
正負が
入れ替わる
39
Slide4016 bit 整数の N 進数の表現
2進数符号なし10進数符号あり10進数
16
進数
0b0000000000000000
0
0
0x0000
0b0000000000000001
1
1
0x0001
0b0000000000000010
2
2
0x0002
0b00000000000000113
3
0x0003
:::
:
0b01111111111111113276732767
0x7fff
0b1000000000000000
32768
-32768
0x8000
:
:
:
:
0b1111111111111100
65532
-4
0xfffc
0b1111111111111101
65533
-3
0xfffd
0b1111111111111110
65534
-2
0xfffe
0b1111111111111111
65535
-1
0xffff
符号あり整数の場合は最上位ビットを符号ビットとして扱う
(2
の補数表現
)
符号ありは
ここ
で
正負が
入れ替わる
教科書
pp.50-55.
40
Slide41N bit 整数の最大値・最小値
Bit数符号あり
10
進数
最小値
符号あり
10
進数
最大値
符号なし
10
進数最大値8-128
127
25516-327683276765535
32-2147483648
2147483647
429496729564-
92233720368547758089223372036854775807
18446744073709551615
Bit
数
符号あり
10
進数
最小値
符号あり
10
進数
最大値
符号なし
10
進数最大値
8
-128
127
255
16
-32768
32767
65535
32
-2147483648
2147483647
4294967295
64
-
9223372036854775808
9223372036854775807
18446744073709551615
41
Slide42符号なし8bit整数の演算整数
オーバーフロー 11111111
= 255
+)00000001
= 1
1
00000000 =
0
整数
アンダーフロー
100000000 = 0-)00000001 = 1 11111111 = 255
有効桁の外に
1
が溢れた
有効桁外の外から
1が溢れた
42
Slide43符号あり8bit整数の演算整数
オーバーフロー 01111111
= 127
+)00000001
= 1
10000000 = -128
整数
アンダーフロー
10000000
= -128-)00000001 = 1 01111111 = 1272の補数表現
100000000
= 0
-)00000001 = 1 11111111 = -1
11111111
= -1+)00000001
= 1 100000000 = 0
有効
桁の外から1を借りてくる
有効
桁の外に
1
を捨てる
符号ビットに
1
が溢れた
符号ビットから
1
が溢れた
43
Slide44RAM (Random Access Memory)コンピュータのメインメモリで利用されている
44
Slide45メモリの構成1byte単位でアドレスが振られているつまり各アドレスには
1byteの値を格納出来る
0x00
0x00000000
0x00
0x00000001
0x00
0x00000002
0x00
0x00000003
0x00
0xffffffff
:
:
:
:
0x00
0x0000000000000000
0x00
0x0000000000000001
0x00
0x0000000000000002
0x00
0x0000000000000003
0x00
0xffffffffffffffff
:
:
:
:
32bit
の
OS
は
32bit
のアドレス空間
最大
Bytes=4GiB
64bit
の
OS
は
64
bit
のアドレス空間
最大
Bytes=16EiB
アドレス
格納値
アドレス
格納値
教科書
pp.52-56.
45
Slide46大きい値の扱い方複数のアドレスをまとめて変数に割り当てる
0x00
0x
~
00
0x00
0x
~
01
0x00
0x
~
02
0x00
0x
~
03
:
:
:
:
0x00
0x
~
04
0x00
0x
~
05
0x00
0x
~
06
:
:
:
:
0x00
0x
~
07
0x00
0x
~
08
8bit
0x00
0x
~
00
0x00
0x
~
01
0x00
0x
~
02
0x00
0x
~
03
:
:
:
:
0x00
0x
~
04
0x00
0x
~
05
0x00
0x
~
06
:
:
:
:
0x00
0x
~
07
0x00
0x
~
08
16bit
46
Slide47大きい値の扱い方複数のアドレスをまとめて変数に割り当てる
0x00
0x
~
00
0x00
0x
~
01
0x00
0x
~
02
0x00
0x
~
03
:
:
:
:
0x00
0x
~
04
0x00
0x
~
05
0x00
0x
~
06
:
:
:
:
0x00
0x
~
07
0x00
0x
~
08
32bit
0x00
0x
~
00
0x00
0x
~
01
0x00
0x
~
02
0x00
0x
~
03
:
:
:
:
0x00
0x
~
04
0x00
0x
~
05
0x00
0x
~
06
:
:
:
:
0x00
0x
~
07
0x00
0x
~
08
64bit
47
Slide48変数の宣言、値の代入値を格納する箱のようなもの
int a; // (1) 変数の宣言
a = 10; // (2)
値の代入
// (3)
教科書
pp.59-61.
10
a
10
(1)
(2)
a
?
a
?
(3)
int
型の変数を作り
a
という名前を付ける
中身は未定
変数
a
に
10
を代入する
変数
a
に
10
が
代入
された状態に
なっている
48
Slide49変数の宣言と初期化宣言
a
10
int
a = 10; // (1)
変数
の宣言と初期化
(1)
int
型の変数を作り
a
という名前を付け10 を代入する教科書 pp.59-61.49
Slide50変数文法
データ型 変数名; // 変数の宣言
データ型 変数名
=
初期代入値
;//
変数の宣言と初期化
データ型 変
数名
1,
変数名
2; //
複数の変数の
宣言データ型 変数名1=初期代入値1, 変数名2=
初期代入値2;
// 複数の変数
の宣言と初期化変数名 = 値
; // 値の代入
教科書 pp.59-61.
50
Slide51リテラルソースコードに直接記述された値数値、文字列等
//...int
main(
int
argc
, char *
argv
[])
{
if (
argc
<
4) { printf(
"Usage: %s output_file
micro_sec
MIDI_note_No\n\n"
, argv
[0
]); return EXIT_FAILURE; } FILE *
fp;
if (fp = fopen(
argv
[
1
],
"
wb
"
)) {
fwrite_wav
(
44100
,
atoi
(
argv
[
2
]),
atoi
(
argv
[
3
]),
fp
);
fclose
(
fp
);
}
return EXIT_SUCCESS;
}
wavtest.c
赤字
で示したような部分が
リテラルに当たる
教科書
p.54.
51
Slide52整数のデータ型char, unsigned char1
バイト、局所的な文字セット内に1文字を保持し得るshort, unsigned short少なくとも16ビットint, unsigned int少なくとも16ビット
通常ホスト計算機の自然な整数サイズ
現在は
32 or 64
ビットであることが多い
long, unsigned
long
少なくとも
32
ビット
明確にビット数は定められていない割り当てビット数の大小関係は short <= int <=long型の前に unsigned を付けると整数型になる教科書
pp.53-55.
コンパイルする環境により使える値の最大値・最小値が異なる!
52
Slide53整定数のリテラル何も指定しないと int 型
末尾に接尾子(U, L)を付けると型指定されるint
i
=
1234
; //
int
型
long l =
1234L
; // long
型
unsigned
int ui = 1234U; // unsigned int 型
unsigned long
ul = 1234UL
; // unsigned long 型53
Slide54C言語のN進数リテラル0b
~ 2進数リテラル(C++14の仕様*1
)
0
~
8
進数リテラル
0x
~
16
進数
リテラル*1: 少なくとも
gcc4.3, Clang3.2 では実装済み古いコンパイラでは2進数リテラルは使えないint
dec =
100; // 10進数の
100int bin = 0b100; // 2
進数の100=10進数の
4int
oct = 0100; // 8進数の100=10
進数の 64
int hex = 0x100; // 16進数の100=10
進数の
256
教科書
p.54.
54
Slide55浮動小数点数のデータ型float 単精度浮動小数点数double
倍精度浮動小数点数long double 拡張精度の浮動小数点数教科書 pp.55-56.55
Slide56浮動小数点数とはIEEE754
http://ja.wikipedia.org/wiki/IEEE_754以下のようなに表現する方法
ビット数
符号
指数部
仮数部
単精度
32bit
1bit
8bit
23bit
倍精度
64bit1bit11bit53bit四倍精度128bit
1bit15bit112bit
指数部の値で
小数点の位置が移動するので
浮動
小
数点と呼ばれる
教科書
pp.55-56.
56
Slide57浮動小数点数定数のリテラル何も指定しないと
double 型末尾に接尾子(F, L)を付けると型指定される1.234E5 のような書き方も出来る
(
指数表現
)
これは
を意味する
float f =
1234F
; // float
型
double d =
1234; // double 型long double ld =
1234L; // long double
型
double e = 1.234E5; // double 型の 123400
57
Slide58ASCII文字コード表
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
1
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
→
←
↑
↓
2
SP
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
3
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
4
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
5
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
6
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
7
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
8
9
A
B
C
D
E
F
上位
4
ビット
下位
4
ビット
赤字は制御コード
教科書
p.51.
http://
ja.wikipedia.org/wiki/ASCII
58
Slide59制御コード
HEXAbbrctrleseqName
Hex
Abbr
ctrl
eseq
Name
0x00
NUL
^@
\0
Null
0x10
DLE^P
Data Link Escape0x01
SOH
^AStart of Heading0x11
DC1
^Q
Device Control 10x02STX
^B
Start of Text0x12DC2
^R
Device Control 2
0x03
ETX
^C
End of Text
0x13
DC3
^S
Device Control 3
0x04
EOT
^D
End of Transmission
0x14
DC4
^T
Device Control 4
0x05
ENQ
^E
Enquiry
0x15
NAK
^U
Negative
Acknowledgement
0x06
ACK
^F
Acknowledgement
0x16
SYN
^V
Synchronous idle
0x07
BEL
^G
\a
Bell
0x17
ETB
^W
End of Transmission Block
0x08
BS
^H
\b
Back Space
0x18
CAN
^X
Cancel
0x09
HT
^I
\t
Horizontal Tab
0x19
EM
^Y
End of Medium
0x0a
LF
^J
\n
Line Feed
0x1a
SUB
^Z
Substitute
0x0b
VT
^K
\v
Vertical Tab
0x1b
ESC
^[
\e
Escape
0x0c
FF
^L
\f
Form Feed
0x1c
FS
^\
File Separator
0x0d
CR
^M
\r
Carriage Return
0x1d
GS
^]
Group Separator
0x0e
SO
^N
Shift Out
0x1e
RS
^^
Record Separator
0x0f
SI
^O
Shift In
0x1f
US
^_
Unit Separator
0x20
SP
Space
0x7f
DEL
^?
Delete
教科書
p.51.
59
Slide60文字定数のリテラル1文字を単一の引用符('
)で囲むchar型の値になる
単一
の
引用
符
(
'
)
は
↑
Shift
'
7
+
char a =
'a
'
;
//
「a」の文字コード
0x61char lf = '\012';
//
改行
の文字
コード
0x0a
を
8
進数で
char
vt
=
'\x0b'
;
//
垂直
タブの文字
コード
0x0b
を
16
進数で
char
cr
=
'
\r
'
;
//
復帰の
文字コード
0x0d
を
//
エスケープシーケ
1
ンスで
教科書
p.56.
60
Slide61エスケープシーケンス\a
警告(ベル)文字
\b
バックスペース
\f
改頁
(
フォームフィード
)
\n
改行
\r
復帰
\t 水平タブ\v 垂直タブ
\\ バックスラッシュ
\? 疑問符
\' 単一引用符\"
二重引用符
\o
oo 8進数 ooo (*1)\
xhh 16進数
hh (*2)教科書 p.56.
(*1)
ooo
は
1
桁ないし
3
桁の
8
進数を取る
(*2)
hh
は
1
桁あるいは
2
桁の
16
進数を取る
これらの表記は、
1
文字
(=1
バイト
)
の値を表す。
61
Slide62幅広文字定数のリテラルchar型では表せない拡張文字セット用文字定数の前に L
を付けるwchar_t型の値になる
wchar_t
hira_a
=
L
'
あ
'
; //
「あ」の文字コード
U+3043?
備考Wikipedia / JIS_X_0213非漢字一覧#1
面4
区http
://ja.wikipedia.org/wiki/JIS_X_0213非漢字一覧#1.E9.9D.A24.E5.8C.BA
62
Slide63文字列定数のリテラル0個以上の文字を二重引用符(
")で囲むchar型の配列になる(後述
)
二重引用
符
(
"
)
は
↑
Shift
"
2
+
char
emp
[]
=
"";
//
空の文字列char str[] = "
I am a string
"
;
//
文字列
char cat[] = "hello, " "world";
// "hello, world"
と同じ
//
連続した文字定数リテラルはコンパイル時に連結される
教科書
pp.44, 96-99.
63