• 検索結果がありません。

C言語入門

N/A
N/A
Protected

Academic year: 2021

シェア "C言語入門"

Copied!
63
0
0

読み込み中.... (全文を見る)

全文

(1)

C言語入門

第2週

プログラミング言語Ⅰ(実習を含む。),

計算機言語Ⅰ・計算機言語演習Ⅰ,

(2)

先週の復習1

(3)

explorer.exe

• ファイルの操作を行うソフト

• デスクトップもエクスプローラーの一部

ここに「explorer」と入力し ENTERキーを叩いても explorer が表示できます これが「explorer」 デスクトップも「explorer」 コントロールパネルも 「explorer」

(4)

ポップアップ(popup)メニューの表示

• 表示させたい場所でマウス右クリック

• 例えばデスクトップの何もない場所で

• メニューの右にある三角印

• サブメニューが出る

ポップアップメニュー サブメニュー

(5)

ファイルの作成とオープン

• explorer の

• 作成したい場所で

マウス右クリック

• ポップアップメニュー出る

• 新規作成→テキストドキュメント

• 出来たファイルは

適当に名前を付けても良い

• マウス左ダブルクリック

→メモ帳で開かれる

(6)

フォルダの作成

• 作成したい所で右クリック

• ポップアップメニューで

• →新規作成

• →フォルダ

• 「新しいフォルダ」ができた

(7)

フォルダを開く

• フォルダアイコンの上で左ダブルクリック

• explorer が開く

(8)

ファイルの移動

• 「テキストドキュメント」を

• 「新しいフォルダ」の中に移動

• 「ドラッグ&ドロップ」すれば良い

(9)

ファイルのコピー

• Ctrl を押したまま 「ドラッグ&ドロップ」

(10)

ファイルの選択

• ファイルを単純にクリック

• ファイル左側のチェックボックスをクリック

• ファイルを囲むようにドラッグ(複数選択)

(11)

ファイルの削除

• 選択したファイル上で右クリック

• →削除

• ファイルを選択して「Delete」キーでも良い

(12)

CUI作業環境 (terminal)

• フォルダをSHIFT+右クリック

cmd.exe

(13)

cmd と bash の主なコマンド

cmd bash マニュアル help [コマンド名] man [コマンド名] ファイル一覧 dir ls ファイルの表示 type ファイル名 cat [ファイル名] ディレクトリ移動 cd ディレクトリ名 cd [ディレクトリ名] ディレクトリ表示 cd pwd ファイルコピー copy コピー元 コピー先 cp コピー元 コピー先 ファイル移動 move コピー元 コピー先 mv コピー元 コピー先 ファイル削除 del ファイル名 rm ファイル名

tab |← →|

ファイル名の補完 コマンド履歴の再利用

(14)

ファイルの場所の記述方法(パス)

• 以下の図のフォルダ構成を仮定する

作業フォルダは CLangI2014 教科書 pp.30-31.

(15)

作業フォルダ

• current directory と言うこともある

ここに表示されているのが 作業フォルダ

(16)

Windows の絶対パス、相対パス

• フォルダの階層を ¥ で区切る

• 現在の作業フォルダは以下の場所

• C:¥Users¥kou¥Desktop¥CLangI2014

• 絶対パスはルートデバイスを基準に

• C:¥Users¥kou¥Desktop¥CLangI2014¥week1¥hello.c

• C:¥Users¥kou¥Desktop¥CLangII2014¥week1¥hellogui.c

• 相対パスは現在の作業フォルダを基準に

• week1¥hello.c

• ..¥CLangII2014¥week1¥hellogui.c

教科書 pp.30-31.

(17)

Cygwin の絶対パス、相対パス

• ディレクトリの階層を / で区切る

• 現在の作業ディレクトリは以下の場所

• /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.c

(18)

特別なフォルダ名

• 「..」

• 1つ親のディレクトリを意味する

• 「.」

• 現在のディレクトリを意味する

• UNIX では実行ファイルの検索パスに作業ディレ

クトリが含まれない

• 作業ディレクトリ内にある実行ファイルを実行する

際 ./ を実行ファイル名の前に付ける必要がある

(19)

補足

• フォルダとディレクトリは同じ概念

• Windows 流ではフォルダと呼ぶ

• UNIX 流ではディレクトリと呼ぶ

• /cygdrive は cygwin 特有の仮想ディレクトリ

• Windows のドライブが配置されている

• 通常 UNIX ではパスに : (コロン)を使わないため

• ネットワークドライブもアクセス出来る

• UNC 表記を用いる

• ¥¥fs.cc.yamaguchi-u.ac.jp¥YUアカウント名

• //fs.cc.yamaguchi-u.ac.jp/YUアカウント名

(20)

コマンドの検索パス

• 環境変数 PATH に設定されたパスからコマン

ドを探して実行する

• cmd での確認方法

• 複数のパスは ; (セミコロン)で区切って与える

• bash での確認方法

• 複数のパスは : (コロン)で区切って与える

> echo %PATH%

$ echo $PATH

(21)

Windows 8 以降

• explorer.exe から

「表示」→「ファイル名拡張子」→ON

ファイル名末尾に .○○○と表示される

(22)

ファイル拡張子の表示

Windows 7 以前

• explorer.exe から

• 「Alt」→「ツール」→「オプション」→「表示」

→「登録されている拡張子は表示しない」→OFF

Alt叩くとメニュー出る ファイル名末尾に .○○○と出る 教科書 p.27.

(23)

ファイル拡張子とは?

• ファイルの種類を表している

• アプリケーションとの関連付けに用いられる

• 実行ファイルは .exe や .com

• テキスト文書は .txt

• Word2007以降は .docx それより前は .doc

• Excel2007以降は .xlsx それより前は .xls

• PowerPoint2007以降は .pptx それより前は .ppt

• 圧縮ファイルは .zip .lzh .tgz .cab 等々

• 等々

• 変更すると開けなくなる

• 普通は変更する必要はない

• メール等で添付されて来たファイルには注意

• 文書ファイルに見えて実行ファイル(実はウィルス)ということも

(24)

C コンパイラによるコンパイル

• cmd.exe から bcc32 で行った例

C:¥Users¥kou¥Desktop¥CLangI2014>dir /B

hello.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 Borland C:¥Users¥kou¥Desktop¥CLangI2014>dir /B hello.c hello.exe hello.obj hello.tds C:¥Users¥kou¥Desktop¥CLangI2014>hello hello, world ファイル一覧の表示 コンパイル ファイル一覧の表示 作成した実行ファイルを実行 教科書 pp.36-42.

(25)

C コンパイラは何をしているのか?

• デバッグ情報付きコンパイルし逆アセンブル

• .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進表現

(26)

C コンパイラは何をしているのか?

• .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言語を コンパイルして得られた アセンブラコード 配置アドレス

(27)
(28)
(29)

テキスト編集系ソフトの種類

• テキストエディタ (メモ帳, 秀丸, etc,,,)

• 基本的にプレーンな文字情報のみ、装飾なし

• リッチテキストエディタ (ワードパッド, etc,,,)

• 字体、色、サイズ等の装飾が可能に

• ワードプロセッサ (Word, 一太郎, etc,,,)

• 更に高度な、文書作成支援機能

• DTPツール (InDesign, Publisher, etc,,,)

(30)

プログラミング向け

テキストエディタの機能

• 構文解析機能

• シンタックスハイライト機能

• 行番号表示機能

• 入力補完機能

• マクロ機能

• 正規表現対応の検索機能

• タグジャンプ機能

• 等々

(31)

テキストエディタ

• 窓の杜

• オフィス / 文書作成 / テキストエディター

• 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/

(32)

テキストエディタ

• サクラエディタ

http://sakura-editor.sourceforge.net/

• xyzzy

(33)

統合開発環境

• Microsoft Visual Studio

http://www.visualstudio.com/ja-jp/

• Eclipse

• Pleiades - Eclipse プラグイン日本語化プラグイン

http://mergedoc.sourceforge.jp/

• NetBeans

https://ja.netbeans.org/

(34)

コメント

• プログラムとしては解釈されない

• 後で読む人用に注釈をしておく機能

• /* ~ */ の間がコメント

• // から行末までがコメント

教科書 p.46. #include <stdio.h> main() { /* ここがコメント */ printf("hello, world¥n"); // ここもコメント } 緑の部分がコメントとして 扱われている

(35)

SI接頭辞

名前

記号

乗数

キロ(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

(36)

2進接頭辞(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

(37)

bit と byte

• b – 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 は 28 = 256 通りの整数を表現可能 符号なし: 0~255 符号あり: −128~127

(38)

16進数

2進数 10進数 16進数 2進数 10進数 16進数 0b0000 0 0x0 0b1000 8 0x8 0b0001 1 0x1 0b1001 9 0x9 0b0010 2 0x2 0b1010 10 0xa 0b0011 3 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.

(39)

8 bit 整数の N 進数の表現

2進数 符号なし10進数 符号あり10進数 16進数 0b00000000 0 0 0x00 0b00000001 1 1 0x01 0b00000010 2 2 0x02 0b00000011 3 3 0x03 : : : : 0b01111111 127 127 0x7f 0b10000000 128 -128 0x80 : : : : 0b11111100 252 -4 0xfc 0b11111101 253 -3 0xfd 0b11111110 254 -2 0xfe 0b11111111 255 -1 0xff 符号あり整数の場合は最上位ビットを符号ビットとして扱う(2の補数表現) 符号ありは ここで 正負が 入れ替わる

(40)

16 bit 整数の N 進数の表現

2進数 符号なし10進数 符号あり10進数 16進数 0b0000000000000000 0 0 0x0000 0b0000000000000001 1 1 0x0001 0b0000000000000010 2 2 0x0002 0b0000000000000011 3 3 0x0003 : : : : 0b0111111111111111 32767 32767 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.

(41)

N bit 整数の最大値・最小値

Bit数 符号あり10進数最小値 符号あり10進数最大値 符号なし10進数最大値 8 -128 127 255 16 -32768 32767 65535 32 -2147483648 2147483647 4294967295 64 -9223372036854775808 9223372036854775807 18446744073709551615 𝑁 −2𝑁−1 2𝑁−1 − 1 2𝑁 − 1

(42)

符号なし8bit整数の演算

• 整数オーバーフロー

11111111 = 255

+)00000001 = 1

1

00000000 = 0

• 整数アンダーフロー

1

00000000 = 0

-)00000001 = 1

11111111 = 255

有効桁の外に1が溢れた 有効桁外の外から1が溢れた

(43)

符号あり8bit整数の演算

• 整数オーバーフロー

01111111 = 127

+)00000001 = 1

10000000 = -128

• 整数アンダーフロー

10000000 = -128

-)00000001 = 1

01111111 = 127

• 2の補数表現

1

00000000 = 0

-)00000001 = 1

11111111 = -1

11111111 = -1

+)00000001 = 1

1

00000000 = 0

有効桁の外から1を借りてくる 有効桁の外に1を捨てる 符号ビットに1が溢れた 符号ビットから1が溢れた

(44)

RAM (Random Access Memory)

(45)

メモリの構成

• 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のアドレス空間 最大232Bytes=4GiB 64bitのOSは64bitのアドレス空間 最大264Bytes=16EiB アドレス 格納値 アドレス 格納値

(46)

大きい値の扱い方

• 複数のアドレスをまとめて変数に割り当てる

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 0x~00 0x00 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

(47)

大きい値の扱い方

• 複数のアドレスをまとめて変数に割り当てる

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

(48)

変数の宣言、値の代入

• 値を格納する箱のようなもの

int a; // (1) 変数の宣言

a = 10; // (2) 値の代入

// (3)

教科書 pp.59-61. 10 a 10 (1) (2) a ? a ? (3) int 型の変数を作り a という名前を付ける 中身は未定 変数 a に 10 を代入する 変数 a に 10 が 代入された状態に なっている

(49)

変数の宣言と初期化

• 宣言

a 10

int a = 10; // (1) 変数の宣言と初期化

(1) int 型の変数を作り a という名前を付け 10 を代入する

(50)

変数

• 文法

データ型 変数名; // 変数の宣言

データ型 変数名=初期代入値;// 変数の宣言と初期化

データ型 変数名1, 変数名2; // 複数の変数の宣言

データ型 変数名1=初期代入値1, 変数名2=初期代入値2;

// 複数の変数の宣言と初期化

変数名 = 値; // 値の代入

教科書 pp.59-61.

(51)

リテラル

• ソースコードに直接記述された値

• 数値、文字列等

//...

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 赤字で示したような部分が リテラルに当たる

(52)

整数のデータ型

• char, unsigned char

• 1バイト、局所的な文字セット内に1文字を保持し得る

• short, unsigned short

• 少なくとも16ビット

• int, unsigned int

• 少なくとも16ビット

• 通常ホスト計算機の自然な整数サイズ

• 現在は 32 or 64 ビットであることが多い

• long, unsigned long

• 少なくとも32ビット

• 明確にビット数は定められていない

• 割り当てビット数の大小関係は short <= int <=long

• 型の前に unsigned を付けると整数型になる

教科書 pp.53-55.

コンパイルする環境により 使える値の最大値・最小値が 異なる!

(53)

整定数のリテラル

• 何も指定しないと int 型

• 末尾に接尾子(U, L)を付けると型指定される

int i =

1234

; // int 型

long l =

1234L

; // long 型

unsigned int ui =

1234U

; // unsigned int 型

unsigned long ul =

1234UL

; // unsigned long 型

(54)

C言語のN進数リテラル

• 0b~ 2進数リテラル(C++14の仕様*1)

• 0~

8進数リテラル

• 0x~ 16進数リテラル

• *1: 少なくとも gcc4.3, Clang3.2 では実装済み

• 古いコンパイラでは2進数リテラルは使えない

int dec =

100

; // 10進数の100

int bin =

0b100

; // 2進数の100=10進数の 4

int oct =

0100

; // 8進数の100=10進数の 64

int hex =

0x100

; // 16進数の100=10進数の256

教科書 p.54.

(55)

浮動小数点数のデータ型

• float

単精度浮動小数点数

• double

倍精度浮動小数点数

(56)

浮動小数点数とは

• IEEE754

http://ja.wikipedia.org/wiki/IEEE_754

• 以下のようなに表現する方法

±仮数部 × 2指数部

ビット数 符号 指数部 仮数部

単精度 32bit 1bit 8bit 23bit 倍精度 64bit 1bit 11bit 53bit 四倍精度 128bit 1bit 15bit 112bit

指数部の値で

小数点の位置が移動するので 浮動小数点と呼ばれる

(57)

浮動小数点数定数のリテラル

• 何も指定しないと double 型

• 末尾に接尾子(F, L)を付けると型指定される

• 1.234E5 のような書き方も出来る(指数表現)

• これは1.234 × 10

5

を意味する

float f =

1234F

; // float 型

double d =

1234

; // double 型

long double ld =

1234L

; // long double 型

(58)

ASCII文字コード表

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

(59)

HEX Abbr ctrl eseq Name Hex Abbr ctrl eseq Name

0x00 NUL ^@ ¥0 Null 0x10 DLE ^P Data Link Escape 0x01 SOH ^A Start of Heading 0x11 DC1 ^Q Device Control 1 0x02 STX ^B Start of Text 0x12 DC2 ^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

(60)

文字定数のリテラル

• 1文字を単一の引用符(')で囲む

• char型の値になる

単一の引用符(')は ↑Shift ' 7 +

char a =

'a'

; //「a」の文字コード0x61

char lf =

'¥012'

; //改行の文字コード0x0aを8進数で

char vt =

'¥x0b'

; //垂直タブの文字コード0x0bを16進数で

char cr =

'¥r'

; //復帰の文字コード0x0dを

//エスケープシーケ1ンスで

(61)

エスケープシーケンス

¥a 警告(ベル)文字

¥b バックスペース

¥f 改頁(フォームフィード)

¥n 改行

¥r 復帰

¥t 水平タブ

¥v 垂直タブ

¥¥ バックスラッシュ

¥? 疑問符

¥' 単一引用符

¥" 二重引用符

¥ooo 8進数 ooo (*1)

¥xhh 16進数 hh (*2)

(*1) ooo は1桁ないし 3桁の8進数を取る (*2) hh は1桁あるいは 2桁の16進数を取る これらの表記は、 1文字(=1バイト)の値を表す。

(62)

幅広文字定数のリテラル

• char型では表せない拡張文字セット用

• 文字定数の前に L を付ける

• wchar_t型の値になる

wchar_t hira_a = L

'あ'

; // 「あ」の文字コードU+3043?

備考

Wikipedia / JIS_X_0213非漢字一覧#1面4区

(63)

文字列定数のリテラル

• 0個以上の文字を二重引用符(")で囲む

• char型の配列になる(後述)

二重引用符(")は ↑Shift " 2 +

char emp[] = ""; // 空の文字列

char str[] = "I am a string"; // 文字列

char cat[] = "hello, " "world"; // "hello, world" と同じ

// 連続した文字定数リテラルはコンパイル時に連結される

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 http://www.vector.co.jp/vpack/filearea/win/writing/edit/ http://sakura-editor.sourceforge.net/ http://xyzzy-022.github.io/ http://www.visualstudio.com/ja-jp/ http://mergedoc.sourceforge.jp/ https://ja.netbeans.org/ http://ja.wikipedia.org/wiki/IEEE_754 http://ja.wikipedia.org/wiki/JIS_X_0213非漢字一覧#1.E9.9D.A24.E5.8C.BA

参照

関連したドキュメント

ところで,このテクストには,「真理を作品のうちへもたらすこと(daslnsaWakPBrinWl

 彼の語る所によると,この商会に入社する時,経歴

Internet Explorer 11 Windows 8.1 Windows 10 Microsoft Edge Windows 10..

注意 Internet Explorer 10 以前のバージョンについては、Microsoft

2021] .さらに対応するプログラミング言語も作

このように、このWの姿を捉えることを通して、「子どもが生き、自ら願いを形成し実現しよう

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から