Objective-C2.0文法メモ 〜 C言語のおさらい
Objective-Cを学ぶ前に、一通りC言語の文法を見直してみます。
C言語文法まとめ
コメント
// コメント /* コメント(複数行) */
変数と変数の型・キャスト
unsigned char uc; char c; unsigned short s; short us; unsigned long ul; long l; unsigned int ui; int i; float f; double d; long double ld;
演算子
int a = 1; int b = 2; int inc1 = a++; int dec1 = a--; int inc2 = ++a; int dec2 = --a; unsigned int size = sizeof(a); int* ptr = &a; a = *ptr; a = +a; a = -a; a = ~a; a = !a; int cast = (int)(0); float mul = a * b; float div = a / b; int rm = a % b; int add = a + b; int sub = a - b; int shift1 = b >> 1; int shift2 = b << 1; bool lt = ( a < b ); bool leq = ( a <= b ); bool gt = ( a > b ); bool geq = ( a >= b ); bool eq = (a == b); bool neq = (a != b); int or = a | b; int and = a & b; int not = a ^ b; bool cand = (a && b); bool cor = (a || b); int tri = c ? a : b; a += 1; a -= 1; a *= 1; a /= 1; a %= 1; a |= 1; a &= 1; a ^= 1; typedef unsigned int uint;
配列
int array[] = {0,1,2}; int elem = array[2]; // 多次元配列 int darray[][2] = {{0,1},{2,3}}; int elem2 = darray[0][1];
ポインタ
int* ptr = &a; a = *ptr; ptr++; // ポインタのインクリメント・デクリメント ptr--;
条件分岐
// if文 if( condition1 ){ // statement } if( condition1 ){ // statement } else if( condition2 ){ // statement } else{ // statement } // switch文 switch(expression){ case 0: // statement break; case 1: // statement break; default: // statement break; } // goto文 if (condition) { goto LABEL1; } if (condition) { goto LABEL2; } LABEL1: // statement LABEL2: // statement
繰り返し処理
// do - while文 do{ // statement }while ( condition ); // while文 while ( condition ){ // statement } // for文 for( initialization; condition; increment ){ continue; // 次のループへ break; // ループを抜ける }
関数
// 宣言 int s_func(char* arg); // 実装 int s_func(char* arg){ return 0; } int main (int argc, const char * argv[]){ s_func("test"); // 呼び出し int (*func_pointer)(char*); // 関数ポインタの定義 func_pointer = s_func; (*func_pointer)("test"); // 呼び出し }
構造体・共用体・列挙型
// 構造体 struct point_t{ int x; int y; }; struct point_t point = {0, 0}; // 構造体の初期化 // 列挙型 enum Answer{ OK, // デフォルトでは0から順に値が設定される FINE = 20 // 設定値を明示 }; // 共用体 union myunion{ struct point_t point; int array[2]; }; union myunion data; data.point.x = 0; data.array[0] = 1; // 構造体型をtypedefで定義する typedef struct tag_point{ int x; int y; }point_t;
プリプロセッサ
例:
// ヘッダのインクルード #include <stdlib.h> // インクルードガード #ifndef INCLUDE_GUARD_H #define INCLUDE_GUARD_H #endif // コメント化 #if 0 // implmentation #endif