ii

Similar documents

‚æ4›ñ

untitled

double float

解きながら学ぶC++入門編

はじめに ESCR Ver. 2.0 発行にあたり 本書は C 言語を用いて開発されるソフトウェアのソースコードの品質をよりよいものとすることを目的 として コーディングの際に注意すべきことやノウハウを 組込みソフトウェア向けコーディング作法ガイ ド ( 英語名 = ESCR: Embedded S

新・明解C言語 実践編

新版明解C言語 実践編

Microsoft Word - Training10_プリプロセッサ.docx

PowerPoint Presentation

untitled

新・明解C言語 ポインタ完全攻略

Java Java Java Java Java 4 p * *** ***** *** * Unix p a,b,c,d 100,200,250,500 a*b = a*b+c = a*b+c*d = (a+b)*(c+d) = 225

Minimum C Minimum C Minimum C BNF T okenseq W hite Any D

解きながら学ぶJava入門編

:30 12:00 I. I VI II. III. IV. a d V. VI

program.dvi

1.ppt

ohp03.dvi

ohp08.dvi

r03.dvi

Java演習(4) -- 変数と型 --

8 if switch for while do while 2

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU

I 2 tutimura/ I 2 p.1/??

3.1 stdio.h iostream List.2 using namespace std C printf ( ) %d %f %s %d C++ cout cout List.2 Hello World! cout << float a = 1.2f; int b = 3; cout <<

Microsoft Word - C.....u.K...doc

r07.dvi

ohp07.dvi

lexex.dvi

Condition DAQ condition condition 2 3 XML key value

r08.dvi

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

[ 1] 1 Hello World!! 1 #include <s t d i o. h> 2 3 int main ( ) { 4 5 p r i n t f ( H e l l o World!! \ n ) ; 6 7 return 0 ; 8 } 1:

C のコード例 (Z80 と同機能 ) int main(void) { int i,sum=0; for (i=1; i<=10; i++) sum=sum + i; printf ("sum=%d n",sum); 2

I. Backus-Naur BNF : N N 0 N N N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) (2) (3) (4) II. 0(0 101)* (

I. Backus-Naur BNF S + S S * S S x S +, *, x BNF S (parse tree) : * x + x x S * S x + S S S x x (1) * x x * x (2) * + x x x (3) + x * x + x x (4) * *

Microsoft Word - Sample_CQS-Report_English_backslant.doc

ex12.dvi

Microsoft PowerPoint - 14Chap17.ppt

DA100データアクイジションユニット通信インタフェースユーザーズマニュアル

1.1 1 C IIA $ cd comp3a %endminipage ~/comp3a mkdir $ mkdir comp3a $ cd comp3a C.c Emacs Cntrol x Control s 2 Emacs Control-x Control-f Control-

II 3 yacc (2) 2005 : Yacc 0 ~nakai/ipp2 1 C main main 1 NULL NULL for 2 (a) Yacc 2 (b) 2 3 y

Microsoft PowerPoint - CproNt02.ppt [互換モード]

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

untitled

fp.gby

gengo1-2

1. A0 A B A0 A : A1,...,A5 B : B1,...,B

新コンフィギュレータのフレームワークについて

:30 12:00 I. I VI II. III. IV. a d V. VI

II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D

C B

void hash1_init(int *array) int i; for (i = 0; i < HASHSIZE; i++) array[i] = EMPTY; /* i EMPTY */ void hash1_insert(int *array, int n) if (n < 0 n >=

For_Beginners_CAPL.indd

Java updated


C言語によるアルゴリズムとデータ構造

6-1

C による数値計算法入門 ( 第 2 版 ) 新装版 サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. このサンプルページの内容は, 新装版 1 刷発行時のものです.

Original : Hello World! (0x0xbfab85e0) Copy : Hello World! (0x0x804a050) fgets mstrcpy malloc mstrcpy (main ) mstrcpy malloc free fgets stream 1 ( \n

( ) 1 1: 1 #include <s t d i o. h> 2 #include <GL/ g l u t. h> 3 #include <math. h> 4 #include <s t d l i b. h> 5 #include <time. h>

C ( ) C ( ) C C C C C 1 Fortran Character*72 name Integer age Real income 3 1 C mandata mandata ( ) name age income mandata ( ) mandat

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裵²ó ¨¡ À©¸æ¹½Â¤¡§¾ò·ïʬ´ô ¨¡

K227 Java 2

P06.ppt

ex01.dvi

ex01.dvi


mstrcpy char *mstrcpy(const char *src); mstrcpy malloc (main free ) stdio.h fgets char *fgets(char *s, int size, FILE *stream); s size ( )

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

bitvisor-ipc v12b.key

I httpd School of Information Science, Japan Advanced Institute of Science and Technology

プログラミング基礎

SystemC言語概論

新・明解Java入門

13 I/O

FreeBSD 1

SystemC 2.0を用いた簡易CPUバスモデルの設計

joho07-1.ppt

R2.7 ポインタの型に気を付ける R2.7.1 (1) ポインタ型は 他のポインタ型及び整数型と相互に変換してはならない ただし データへのポインタ型における void* 型との相互変換は除く (2) ポインタ型は 他のポインタ型 及びポインタ型のデータ幅未満の整数型と相互に変換してはならない た

Taro-リストⅢ(公開版).jtd

超初心者用

1:. Csmith,, (B!=0? A/B : A),.,., Orange3 [3], Orange4 [4],., Csmith., Csmith GCC LLVM.,,., Orange3, Orange4,, if for., Orange4, C, Csmith.,., if, for

JavaプログラミングⅠ

(300, 150) 120 getchar() HgBox(x, y, w, h) (x, y), w, h #include <stdio.h> #include <handy.h> int main(void) { int i; double w, h; } HgO

橡Pro PDF

: CR (0x0d) LF (0x0a) line separator CR Mac LF UNIX CR+LF MS-DOS WINDOWS Japan Advanced Institute of Science and Technology

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() malloc 2 #include <stdio.h> #include

programmingII2019-v01

yacc.dvi

#include <stdio.h> 2 #include <stdlib.h> 3 #include <GL/glut.h> 4 Program 1 (OpenGL GameSample001) 5 // 6 static bool KeyUpON = false; // 7 sta

プログラミング及び演習 第1回 講義概容・実行制御

(1/2) 2/45 HPC top runner application programmer PC-9801F N88-BASIC Quick BASIC + DOS ( ) BCB Windows Percolation, Event-driven MD ActionScript Flash

main main Makefile Makefile C.5 Makefile Makefile Makefile A Mech (TA ) 1. Web ( iku

O(N) ( ) log 2 N

BW BW

Transcription:

ii

Part 1. Part 2. Part 3. iii

iv

... iii Part 1 1... 2 1.1... 2 1.2... 3 1.3... 4 1.4... 5 2... 8 2.1... 8 2.2... 11 3... 13 3.1... 13 3.2... 14 3.3... 16 3.4... 17 Part 2... 20... 23... 24... 25... 55... 111... 123 v

Part 3... 128 1... 128 2... 130 3... 131 4... 133 5... 134 6... 135 A... 139 BC... 151 C... 159... 167 vi

Part1 1 2 3 1.1 1.2 1.3 1.4 2.1 2.2 3.1 3.2 3.3 3.4

1 1.1 2

1.2 3

1.3 4

1.4 5

6

7

2 2.1 -X 8

9

10

2.2 11

12

3 3.1 13

3.2 14

15

3.3 16

3.4 17

Part 2

3.1 3.2 3.3 3.4 20

1 1 1.1 R1.1.1 void func() { int var1 = 0; /* */ int i; var1++; /* */ for (i = 0; i < 10; i++) { void func() { int var1; var1++; 1 1.1 1.2 1.3 R1.1.2 const int N = 10; const int N; 26 27 21

22

23

24

1 1 1.1 1.2 1.3 26

1.1 R1.1.1 void func() { int var1 = 0; /* */ int i; var1++; /* */ for (i = 0; i < 10; i++) { void func() { int var1; var1++; 1 R1.1.2 const int N = 10; const int N; 27

1.2 R1.2.1 1 char var[] = "abc"; char var[4] = "abc"; char var[3] = "abc"; R1.2.2 /* E1 E4 */ enum etag { E1=9, E2, E3, E4 ; enum etag var1; var1 = E3; /* var1 E3E4 */ if (var1 == E4) /* E3E4 11 */ enum etag { E1, E2=10, E3, E4=11 ; enum etag var1; var1 = E3; /* E3E4 */ if (var1 == E4) 28

1.3 R1.3.1 -- -- 1 #defi ne N 10 int data[n]; int *p; int i; p = data; i = 1; 12 data[i] = 10; /* OK */ data[i+3] = 20; /* OK */ 2 *(p + 1) = 10; #defi ne N 10 int data[n]; int *p; p = data; 1 *(p + 1) = 10; /* NG */ p += 2; /* NG */ 2 *(p + 20) = 10; /* NG */ 29

R1.3.2 1 ptrdiff_t off; /* ptrdiff_tstddef.h */int var1[10]; int *p1, *p2; p1 = &var1[5]; p2 = &var1[2]; off = p1 - p2; /* OK */ ptrdiff_t off; /* ptrdiff_tstddef.h */int var1[10], var2[10]; int *p1, *p2; p1 = &var1[5]; p2 = &var2[2]; off = p1 - p2; /* NG */ R1.3.3 #defi ne N 10 char var1[n]; void func(int i, int j) { if (&var1[i] < &var1[j]) { #defi ne N 10 char var1[n]; char var2[n]; void func(int i, int j) { if (&var1[i] < &var2[j]) { 30

2 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 31

2.1 R2.1.1 2 #defi ne LIMIT 1.0e-4 void func(double d1, double d2) { double diff = d1 - d2; if (-LIMIT <= diff && diff <= LIMIT) { void func(double d1, double d2) { if (d1 == d2) { R2.1.2 void func() { int i; for (i = 0; i < 10; i++) { void func() { double d; for (d = 0.0; d < 1.0; d += 0.1) { 32

R2.1.3 struct { char c; long l; var1, var2; void func() { if (var1.a == var2.a && var1.b == var2.b) { struct { char c; long l; var1, var2; void func() { if (memcmp(&var1, &var2, sizeof(var1)) == 0) { 2 2.2 R2.2.1 #defi ne FALSE 0 /* func1 01 */ void func2() { if (func1()!= FALSE) { if (func1()) { #defi ne TRUE 1 /* func1 01 */ void func2() { if (func1() == TRUE) { 33

2.3 R2.3.1 2 #defi ne MAX 0xffffUL /* long */ unsigned int i = MAX; if (i < MAX + 1) /* long 32bit int bit */ #defi ne MAX 0xffffU unsigned int i = MAX; if (i < MAX + 1) /* int 16bit 32bit int 16bit int 32 bit int */ R2.3.2 void func(int i1, int i2, long l1) { i1 = (i1 > 10)? i2 : (int)l1; void func(int i1, int i2, long l1) { i1 = (i1 > 10)? i2 : l1; 34

R2.3.3 void func(int arg) { int i; for (i = 0; i < arg; i++) { void func(int arg) { unsigned char i; for (i = 0; i < arg; i++) { 2 2.4 R2.4.1 int i1, i2; long l; double d; void func() { d = (double)i1 / (double)i2; /* */ l = ((long)i1) << i2; /* long */ int i1, i2; long l; double d; void func() { d = i1 / i2; /* */ l = i1 << i2; /* int */ 35

2 R2.4.2 long l; unsigned int ui; void func() { l = l / (long)ui; l = (unsigned int)l / ui; long l; unsigned int ui; void func() { l = l / ui; if (l < ui) { if (l < (long)ui) { if ((unsigned int)l < ui) { 36

2.5 R2.5.1 /* */ short s; /* 16 */ long l; /* 32 */ void func() { s = (short)l; s = (short)(s + 1); /* */ unsigned int var1, var2; /* int16 */ var1 = 0x8000; var2 = 0x8000; if ((long)var1 + var2 > 0xffff) { /* */ /* */ short s; /* 16 */ long l; /* 32 */ void func() { s = l; s = s + 1; /* */ unsigned int var1, var2; /* int16 */ var1 = 0x8000; var2 = 0x8000; if (var1 + var2 > 0xffff) { /* */ 2 37

R2.5.2-2 int i; void func() { i = -i; unsigned int ui; void func() { ui = -ui; - R2.5.3 uc = 0x0f; if((unsigned char)(~uc) >= 0x0f) uc = 0x0f; if((~uc) >= 0x0f)/* */ 38

R2.5.4 unsigned char a; /* 8 */ unsigned short b; /* 16 */ b = (unsigned short)a << 12; /* 16 */ unsigned char a; /* 8 */ unsigned short b; /* 16 */ b = a << 12; /* */ 2 39

2.6 R2.6.1 2 struct S { signed int m1:2; unsigned int m2:1; unsigned int m3:4; ; struct S { int m1:2; /* */ signed int m2:1; /* signed 1bit */ char m3:4; /* int */ ; R2.6.2 unsigned int fl ags; void set_x_on() { fl ags = 0x01; signed int fl ags; void set_x_on() { fl ags = 0x01; 40

2.7 R2.7.1 2 int *ip; int (*fp)(void) ; char *cp; int i; void *vp; 1 ip = (int*)vp; 2 i = (int)ip; 3 i = (int)fp; cp = (char*)ip; int *ip; int (*fp)(void) ; char c; char *cp; 1 ip = (int*)cp; 2 c =(char) ip; 3 ip =(int*) fp; 41

2 R2.7.2 void func(const char *); const char *str; void x() { func(str); void func(char *); const char *str; void x() { func((char*)str); R2.7.3 int * func1() { return -1; int func2() { if (func1() < 0) { /* */ return 0; 42

2.8 R2.8.1 int func(void) ; int func(); 2 R2.8.2 1 int func(int a, char b); 1 int func(int a, char b,... ); 43

2 R2.8.3 -- fi le1.h -- void f(int i); -- fi le1.c -- #include "fi le1.h" void f(int i) { -- fi le2.c -- #include "fi le1.h" void g(void) { f(10); -- fi le1.c -- void f(int i); /* */ void f(int i) { -- fi le2.c -- void f(int i); /* */ void g(void) { f(10); 44

3 3 3.1 3.2 3.3 3.4 3.5 3.6 45

3.1 R3.1.1 3 1 extern char *mes[3]; char *mes[] = {"abc", "def", NULL; 2 extern char *mes[]; char *mes[] = {"abc", "def", NULL; 12 extern int var1[max]; int var1[max]; 1 extern char *mes[]; char *mes[] = {"abc", "def", NULL; 12 extern int var1[]; int var1[max]; 46

R3.1.2 char var1[max]; for (i = 0; i < MAX && var1[i]!= 0; i++) { /* var1 0 */ char var1[max]; for (i = 0; var1[i]!= 0; i++) {/* var1 0 */ 3 3.2 R3.2.1 if (y!= 0) ans = x/y; ans = x/y; 47

R3.2.2 3 if (p!= NULL) *p = 1; *p = 1; 3.3 R3.3.1 p = malloc(buffersize); if (p == NULL) /* */ else *p = ' 0'; p = malloc(buffersize); *p = ' 0'; 48

R3.3.2 if ((MIN <= para) && (para <= MAX)) ret = func(para); 3.4 R3.4.1 ret = func(para); 3 unsigned int calc(unsigned int n) { if (n <= 1) { return 1; return n * calc(n-1); 49

3 3.5 R3.5.1 /*else if-else if else */ if (var1 == 0) { else if (0 < var1) { else { /* */ if (var1 == 0) { else if (0 < var1) { else { /* NOT REACHED */ /*else if-elseif */ if (var1 == 0) { else if (0 < var1) { 50

R3.5.2 /*default switch default */ switch(var1) { case 0: break; case 1: break; default: /* */ break; switch(var1) { case 0: break; case 1: break; default: /* NOT REACHED */ break; /*default switch */ switch(var1) { case 0: break; case 1: break; 3 51

3 R3.5.3 void func() { int i; for (i = 0; i < 9; i += 2) { void func() { int i; for (i = 0; i!= 9; i += 2) { 52

3.6 R3.6.1 f (x, x); x++; f (x + 1, x); x++; f (x, x++); 3 x = x + 1; x = f(x); 53

R3.6.2 3 1. extern int G_a; x = func1(); x += func2(); int func1(void) { G_a += 10; int func2(void) { G_a -= 10; 2. volatile int v; y = v; f(y, v); 1. extern int G_a; x = func1() + func2(); /* */ int func1(void) { G_a += 10; int func2(void) { G_a -= 10; 2. volatile int v; f(v, v); 54

1 1.1 1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 56

1.1 M1.1.1 void func(void) { void func(int arg) { /* arg */ M1.1.2 1 #if 0 /* */ a++; #endif /* a++; */ 57

1.2 M1.2.1 1 int i; int j; 2 int i, j; int k = 0; int *p; int i; 1 int i, j; 2 int i, j, k = 0; /* NG*/ int *p, i; /* NG*/ 1 M1.2.2 void func(long int); fl oat f; long int l; unsigned int ui; f = f + 1.0F; /* fl oat */ func(1l); /* L */ if (ui < 0x8000U) { /* unsiged */ void func(long int); fl oat f; long int l; unsigned int ui; f = f + 1.0; func(1l); /* 1l11 */ if (ui < 0x8000) { 58

M1.2.3 char abc[] = "aaaaaaaa n" "bbbbbbbb n" "ccccccc n"; char abc[] = "aaaaaaaa n bbbbbbbb n ccccccc n"; 1 59

1.3 M1.3.1 1 if (i_var1 == 0) { i_var2 = 0; else { i_var2 = 1; switch (i_var1 == 0) { case 0: i_var2 = 1; break; default: i_var2 = 0; break; M1.3.2 switch (x) { case 1: { break; case 2: break; default: break; switch (x) { /* switch */ case 1: { /* */ case 2: /* case */ break; default: break; 60

M1.3.3 extern int global; int func(void) { extern global; func(void) { 1.4 M1.4.1 1 if ((x > 0) && (x < 10)) if ((!x) y) if ((fl ag_tb[i]) && status) if ((x!= 1) && (x!= 4) && (x!= 10)) if (x > 0 && x < 10) if (! x y) if (fl ag_tb[i] && status) if (x!= 1 && x!= 4 && x!= 10) 61

M1.4.2 a = (b << 1) + c; a = b << (1 + c); a = b << 1 + c; /* */ 1 1.5 M1.5.1 void func(void); void (*fp)(void) = &func; if (func()) { void func(void); void (*fp)(void) = func; /*NG: & */ if (func) { /* NG: */ 62

M1.5.2 int x = 5; if (x!= 0) { int x = 5; if (x) { 1.6 M1.6.1 1 /* */ for (i = 0; i < MAX; i++) { data[i] = i; if (min > max) { wk = max; max = min; min = wk; /* */ for (i = 0; i < MAX; i++) { data[i] = i; if (min > max) { i = max; max = min; min = i; 63

M1.6.2 1 2 /* type INT i_varchar c_var[4] */ struct stag { int type; union utag { char c_var[4]; int i_var; u_var; s_var; int i; if (s_var.type == INT) { s_var.u_var.i_var = 1; i = s_var.u_var.i_var; 2 /* type INT i_varchar c_var[4] */ struct stag { int type; union utag { char c_var[4]; int i_var; u_var; s_var; int i; if (s_var.type == INT) { s_var.u_var.c_var[0] = 0; s_var.u_var.c_var[1] = 0; s_var.u_var.c_var[2] = 0; s_var.u_var.c_var[3] = 1; i = s_var.u_var.i_var; 64

1.7 M1.7.1 int var1; void func(int arg1) { int var2; var2 = arg1; { int var3; var3 = var2; int var1; void func(int arg1) { int var1; /* */ var1 = arg1; { int var1;/* */ var1 = 0;/* var1 */ 1 65

M1.7.2 #include <string.h> void *my_memcpy(void *arg1, const void *arg2, size_t size) { #undef NULL #defi ne NULL ((void *)0) #include <string.h> void *memcpy(void *arg1, const void *arg2, size_t size) { 1 M1.7.3 int _Max1; /* */ int max2; /* */ int _max3; /* */ struct S { int _mem1; /* */ ; 66

1.8 M1.8.1 1 a = *p; p++; /* p p */ if ((MIN < a) && (a < MAX)) { /* p MIN MIN p ( ) */ if ((MIN < *p) && (*p++ < MAX)) { 67

M1.8.2 #defi ne #defi ne START 0x0410 STOP 0x0401 #defi ne BIGIN { #defi ne END #defi ne LOOP_STAT for(;;) { #defi ne LOOP_END 1 M1.8.3 68

M1.8.4 s = "abc?(x)"; s = "abc??(x)"; /* 3 "abc[x)" */ M1.8.5 1 a = 0; b = 8; c = 100; a = 000; b = 010; c = 100; 69

1.9 M1.9.1 1 for (;;) { /* */ #defi ne NO_STATEMENT i = COUNT; while ((--i) > 0) { NO_STATEMENT; for (;;) { i = COUNT; while ((--i) > 0); M1.9.2 70

1.10 M1.10.1 #defi ne MAXCNT 8 if (cnt == MAXCNT) { if (cnt == 8) { 1 1.11 M1.11.1 const volatile int read_only_mem; /* */ const int constant_data = 10; /* */ /* arg */ void func(const char *arg, int n) { int i; for (i = 0; i < n; i++) { put(*arg++); int read_only_mem; /* */ int constant_data = 10; /* */ /* arg */ void func(char *arg, int n) { int i; for (i = 0; i < n; i++) { put(*arg++); 71

M1.11.2 1 volatile int x = 1; while (x == 0) { /* x */ int x = 1; while (x == 0) { /* x */ 72

M1.11.3 const int x = 100;/* ROM */ int x = 100; 1.12 M1.12.1 1 #if 0 /* */ #endif #if 0 #else int var; #endif #if 0 /* I don't know */ #endif #if 0 /* #endif #if 0 #else1 int var; #endif #if 0 I don't know #endif 73

2 2.1 2.2 2 74

2.1 M2.1.1 int arr1[2][3] = {{0, 1, 2, {3, 4, 5; int arr2[3] = {1, 1, 0; int arr1[2][3] = {0, 1, 2, 3, 4, 5; int arr2[3] = {1, 1; 2 M2.1.2 if (x == 1) { func(); if (x == 1) func(); 75

2.2 M2.2.1 2 void func1(void) { static int x = 0; if (x!= 0) { /* */ x++; void func2(void) { int y = 0; /* */ int x = 0; /* x func1 */ int y = 0; /* y func2 */ void func1(void) { if ( x!= 0 ) {/* */ x++; void func2(void) { y = 0; /* */ 76

M2.2.2 /* x */ static int x; void func1(void) { x = 0; void func2(void) { if (x == 0) { x++; /* x */ int x; void func1(void) { x = 0; void func2(void) { if (x==0) { x++; 2 M2.2.3 /* func1 */ static void func1(void) { void func2(void) { func1(); /* func1 */ void func1(void) { void func2(void) { func1(); 77

M2.2.4 2 enum ecountry { ENGLAND, FRANCE, country; enum eweek { SUNDAY, MONDAY, day; if ( country == ENGLAND ) { if ( day == MONDAY ) { if ( country == SUNDAY ) { */ /* #defi ne ENGLAND 0 #defi ne FRANCE 1 #defi ne SUNDAY 0 #defi ne MONDAY 1 int country, day; if ( country == ENGLAND ) { if ( day == MONDAY ) { if ( country == SUNDAY ) { */ /* 78

3 3.1 3 3.2 3.3 3.4 79

3.1 M3.1.1 3 end = 0; for (i = 0; &&!end; i++) { 1; if ( 1 2) { end = 1; else { 2; for (i = 0; ; i++) { 1; if ( 1 2) { break; 2; for (i = 0; ; i++) { 1; if ( 1) { break; if ( 2) { break; 2; 80

M3.1.2 12 for (i = 0; ; i++) { ; 2 if (err!= 0) { goto ERR_RET; ERR_RET: end_proc(); return err; 12 i = 0; LOOP: ; i++; if ( ) { goto LOOP; 3 M3.1.3 for (i = 0; 1; i++) { 1; if (! 2) { 2; for (i = 0; 1; i++) { 1; if ( 2) { continue; 2; 81

M3.1.4 3 12 switch (week) { case A: code = MON; break; case B: code = TUE; break; case C: code = WED; break; default: code = ELSE; break; 2 dd = 0; switch (status) { case A: dd++; /* FALL THROUGH */ case B: 12 /* week code ELSE ==> */ switch (week) { case A: code = MON; case B: code = TUE; case C: code = WED; default: code = ELSE; /* case B 12 */ dd = 0; switch (status) { case A: dd++; case B: 82

M3.1.5 3.2 M3.2.1 12 a = 1; b = 1; j = 10; for (i = 0; i < 10; i++) { j--; 2 for (i = 0, j = 10; i < 10; i++, j--) { 12 a = 1, b = 1; 1 for (i = 0, j = 10; i < 10; i++, j--) { 3 83

M3.2.2 x = y = 0; y = (x += 1) + 2; y = (a++) + (b++); c = *p++; *p++ = *q++; 3 3.3 M3.3.1 for (i = 0; i < MAX; i++) { j++; for (i = 0; i < MAX; i++, j++) { 84

M3.3.2 for (i = 0; i < MAX; i++) { for (i = 0; i < MAX; ) { i++; M3.3.3 3 12 p = top_p; if (p!= NULL) { 1 c = *p++; while (c!= ' 0') { c = *p++; 12 if (p = top_p) { 1 while (c = *p++) { /* 2 OK */ if( )for( ; ; )while( )( )? : && 85

3.4 M3.4.1 int **p; typedef char **strptr_t; strptr_t q; int ***p; typedef char **strptr_t; strptr_t *q; 3 86

4 4.1 4.2 4 4.3 4.4 4.5 4.6 4.7 87

4.1 M4.1.1 4 88

x=-1; /* x-=1 */ x =- 1; /* x-=1 */ x = var1 + var2 + var3 + var4 + var5 + var6 + var7 + var8 + var9; if (var1 == var2 && var3 == var4) 4 x = var1 + var2 + var3 + var4 + var5 + var6 + var7 + var8 + var9; if (var1 == var2 && var3 == var4) 89

4 1K&R void func(int arg1) { /* { */ /* 1 */ if (arg1) { 2BSD void func(int arg1) { /* { */ if (arg1) { 3GNU void func(int arg1) { /* { 0 */ if (arg1) { 90

4.2 M4.2.1 4 /* * */ 91

4 switch (status) { case CASE1: ; /* FALL THROUGH */ case CASE2: if ( 1) { ; else if ( 2) { ; else { /* DO NOTHING */ 92

4.3 M4.3.1 M4.3.2 4 93

4 94

4.4 M4.4.1 4 95

M4.4.2 4 96

M4.4.3 --- my_inc.h --- extern int x; int func(int); -------------- #include "my_inc.h" int x; int func(int in) { /* x func */ int x; int func(int in) { M4.4.4 4 int x; /* 1 1 */ int x; int x; /* */ 97

M4.4.5 4 --- fi le1.h --- extern int x; /* */ int func(void); /* */ --- fi le1.c --- #include "fi le1.h" int x; /* */ int func(void) /* */ { --- fi le1.h --- int x; /* */ static int func(void) /* */ { M4.4.6 --- myheader.h --- #ifndef MYHEADER_H #defi ne MYHEADER_H #endif /* MYHEADER_H */ --- myheader.h --- void func(void); /* end of fi le */ 98

4.5 M4.5.1 1 int func1(int, int); int func1(int x, int y) { /* */ 2 int func1(int x, int y); int func2(fl oat x, int y); int func1(int x, int y) { /* */ 12 int func1(int x, int y); int func2(fl oat x, int y); int func1(int y, int x) /* */ { /* */ typedef int INT; int func2(fl oat x, INT y) /* y */ { /* */ 4 int func2(fl oat x, int y) { /* */ 99

M4.5.2 struct TAG{ int mem1; int mem2; ; struct TAG x; struct TAG{ int mem1; int mem2; x; 4 M4.5.3 1 struct tag data[] = { { 1, 2, 3, { 4, 5, 6, { 7, 8, 9 /* */ ; 2 struct tag data[] = { { 1, 2, 3, { 4, 5, 6, { 7, 8, 9, /* */ ; 12 struct tag x = { 1, 2, ; /* 23 */ 100

4.6 M4.6.1 1 char *p; int dat[10]; 1 char *p; int dat[10]; p = 0; dat[0] = 0; 2 char *p; int dat[10]; p = NULL; dat[0] = NULL; 2 char *p; int dat[10]; p = NULL; dat[0] = 0; p = 0; dat[0] = NULL; 4 101

4.7 M4.7.1 #defi ne M_SAMPLE(a, b) ((a)+(b)) #defi ne M_SAMPLE(a, b) a+b 4 M4.7.2 #ifdef AAA /* AAA */ #else /* not AAA */ /* AAA */ #endif /* end AAA */ #ifdef AAA /* AAA */ #else /* AAA */ #endif 102

M4.7.3 #if defi ned(aaa) #endif #if AAA #endif M4.7.4 4 #if defi ned(aaa) #endif #defi ne DD(x) defi ned(x) #if DD(AAA) #endif 103

M4.7.5 #defi ne AAA 0 #defi ne BBB 1 #defi ne CCC 2 struct stag { int mem1; char *mem2; ; /* */ struct stag { int mem1; /* */ #defi ne AAA 0 #defi ne BBB 1 #defi ne CCC 2 char *mem2; ; 4 enum etag { AAA, BBB, CCC ; struct stag { enum etag mem1; char *mem2; ; M4.7.6 104

5 5.1 5.2 5 105

5.1 M5.1.1 5 #ifdef DEBUG fprintf(stderr, "var1 = %d n", var1); #endif DEBUG_PRINT(str); /* str */ 106

-- debug_macros.h -- #ifdef DEBUG #defi ne DEBUG_PRINT(str) fputs(str, stderr) #else #defi ne DEBUG_PRINT(str) ((void) 0) /* no action */ #endif /* DEBUG */ void func(void) { DEBUG_PRINT(">> func n"); DEBUG_PRINT("<< func n"); 5 void func(int *p) { assert(p!= NULL); *p = INIT_DATA; #ifdef NDEBUG #defi ne assert(exp) ((void) 0) #else #defi ne assert(exp) (void) ((exp)) (_assert(#exp, FILE, LINE ))) #endif 107

void _assert(char *mes, char *fname, unsigned int lno) { fprintf(stderr, "Assert:%s:%s(%d) n", mes, fname, lno); ffl ush(stderr); abort(); 5 M5.1.2 2 #defi ne AAA(a, b) a#b #defi ne BBB(x, y) x##y 12 #defi ne XXX(a, b, c) a#b##c 108

M5.1.3 int func(int arg1, int arg2) { retrun arg1 + arg2; #defi ne func(arg1, arg2) (arg1 + arg2) 5 5.2 M5.2.1 109

-- X_MALLOC.h -- #ifdef DEBUG void *log_malloc(size_t size, char*, char*); void log_free(void*); #defi ne X_MALLOC(size) log_malloc(size, FILE, LINE ) #defi ne X_FREE(p) log_free(p, FILE, LINE ) #else #include <stdlib.h> #defi ne X_MALLOC(size) malloc(size) #defi ne X_FREE(p) free(p) #endif 5 #include "X_MALLOC.h" p = X_MALLOC(sizeof(*p) * NUM); if (p == NULL) { return (MEM_NOTHING); X_FREE(p); return (OK); 110

1 1.1 1.2 1.3 1.4 1 1.5 112

1.1 P1.1.1 P1.1.2 1 113

P1.1.3 1.2 P1.2.1 1 int index_arr[10]; // int *index_ptr = index_arr; // 114

P1.2.2 char c = ' t'; /* OK */ char c = ' x'; /*NG x*/ 1 115

1.3 P1.3.1 char c = 'a'; /* */ int8_t i8 = -1; /* 8bit typedef */ char c = -1; if (c > 0) { /* : char */ 1 P1.3.2 /* int 16bitlong32bit */ enum largenum { LARGE = INT_MAX ; /* int 16bitlong32bit */ enum largenum { LARGE = INT_MAX+1 ; 116

P1.3.3 2 struct S { unsigned int bit1:1; unsigned int bit2:1; ; extern struct S * p; /* p p bit1 OK */ p->bit1 = 1; 2 struct S { unsigned int bit1:1; unsigned int bit2:1; ; extern struct S * p; /* p IO bit1 */ p->bit1 = 1; /* p */ 1 117

1.4 P1.4.1 #include <stdio.h> #include "myheader.h" #if VERSION == 1 #defi ne INCFILE "vers1.h" #elif VERSION == 2 #defi ne INCFILE "vers2.h" #endif #include INCFILE #include stdio.h /* < > "" */ #include "myheader.h" 1 /* 1 */ P1.4.2 1 #include <stdio.h> #include "myheader.h" #include "stdio.h" #include <myheader.h> 118

P1.4.3 #include "inc/my_header.h" /* OK */ #include "inc my_header.h" /* NG */ 1.5 P1.5.1 #include "h1.h" #include "/project1/module1/h1.h" 1 119

2 2.1 2 120

2.1 P2.1.1 #defi ne SET_PORT1 asm(" void f() { SET_PORT1; st.b 1, port1") void f() { asm(" st.b 1,port1"); /* asm */ P2.1.2 /* interrupt */ #defi ne INTERRUPT interrupt INTERRUPT void int_handler (void) { /* interrupt */ interrupt void int_handler(void) { 2 121

P2.1.3 12 uint32_t fl ag32; uint32_t */ /* 32bit 12 unsigned int fl ag32; */ /* int32bit 2 int i: for (i = 0; i < 10; i++) { /* i 8bit 16bit 32bit OK OK */ 2 122

1 1.1 1 124

1.1 E1.1.1 extern void func1(int,int); /* */ #defi ne func2(arg1, arg2) /* */ func1(arg1, arg2); for (i = 0; i < 10000; i++) { func2(arg1, arg2); /* */ #defi ne func1(arg1, arg2) /* */ extern void func2(int, int); /* */ func1(arg1, arg2); for (i = 0; i < 10000; i++) { func2(arg1, arg2); /* */ E1.1.2 var1 = func(); for (i = 0; (i + var1) < MAX; i++) { /* func */ for (i = 0; (i + func()) < MAX; i++) { 1 125

E1.1.3 typedef struct stag { int mem1; int mem2; STAG; int func (const STAG *p) { return p->mem1 + p->mem2; typedef struct stag { int mem1; int mem2; STAG; int func (STAG x) { return x.mem1 + x.mem2; E1.1.4 1 126

Part 3 1 2 3 4 5 6

1 return ret; ret = ERROR; 128

size = sizeof(x++); void func( ) { int cnt; cnt = 0; return; int func( ) { int cnt; return cnt++; 129

int func(int in) { in = 0; /* */ 2 if (0 < x < 10) unsigned char uc; unsigned int ui; if (uc == 256) switch (uc) { case 256: if (ui < 0) 130

if (str == "abc") int func1(int in) { if (in < 0) return; /* NG */ return in ; int func2(void) { /* NG */ return; 3 char var1[n]; for (i = 1; i <= N; i++) { /* NG*/ var1[i] = i; var1[-1] = 0; /* NG */ var1[n] = 0; /* NG */ 131

int *func(tag *p) { int x; p->mem = &x; /* */ return &x; /* */ tag y; int *p; p = func(&y); *p = 10; /* */ *y.mem = 20; /* */ struct stag { /**/ struct stag *next;... ; struct stag *wkp; /* */ struct stag *top; /* */... /* */ /* for 3NG */ for (wkp = top; wkp!= NULL; wkp = wkp-> next) { free(wkp); 132

char *s; s = "abc"; /* ROM */ s[0] = 'A'; /* NG */ #defi ne A 10 #defi ne B 20 char a[a]; char b[b]; memcpy(a, b, sizeof(b)); 4 if (x < 0 && x > 10) 133

int i, data[10], end = 0; for (i = 0; i < 10!end; i++) { data[i] = ; /* */ if ( ) { end = 1; if (len1 & len2) 5 if (x = 0) 134

6 /* AAA */ #defi ne AAA 100 a = AAA; /* 100 */ #defi ne AAA 10 b = AAA; /* 10 */ void func(const int *p) { *p = 0; /* const NG*/ 135

A -- -- 139

- 140

141

142

143

144

145

146

147

148

149

BC 151

152

153

-- -- 154

- 155

156

157

158

C 159

160

161

162

163

164

165

166

167

168