数学関数を使う時の注意点

・数学関数の戻り値はdoubleである。
・関数の引数はdoubleである。(例外有)
・角度はラジアンで示す。(引数にそのまま角度を入れてもダメって事)

サンプル

#include <stdio.h>
#include <math.h>

#define PI 3.14159
#define RAD(x) ( (x) * PI / 180.0 )

void main()
{
 double r;
 printf( "x sin(r) cos(r) tan(r)\n" );

 for ( r=0.l; r<=180.l; r+=10.l )
  printf( "%4.1f %12.5f %12.5f %12.5f\n", r, sin(RAD(r)), cos(RAD(r)), tan(RAD(r)) );
}

C > 標準関数 > 数学関数 | comments (0) | trackbacks (0)

文字検査/変換マクロ

isalnum(c)文字cが英数字(A〜Z、a〜z、0〜9)なら真
isalpha(c)文字cが英文字(A〜Z、a〜z)なら真
isascii(c)文字cがASCIIコード(0x00〜0x7f)なら真
iscntrl(c)文字cが制御文字(0x00〜0x1f、0x7f)なら真
isdigit(c)文字cが数字(0〜9)なら真
isgraph(c)文字cが空白を除く印字可能文字(0x21〜0x7e)なら真
islower(c)文字cが小文字(a〜z)なら真
isprint(c)文字cが印字可能文字(0x20〜0x7e)なら真
ispunct(c)文字cが句読点(0x21〜0x2f、0x30〜0x40、0x5b〜0x60、0x7b〜0x7e)なら真
isspace(c)文字cが空白、タブ、復帰、改行、垂直タブ、改頁(0x09〜0x0d、0x20)なら真
isupper(c)文字cが大文字(A〜Z)なら真
isxdigit(c)文字cが16進表示文字(0〜9、A〜F、a〜f)なら真
tolower(c)文字cが大文字なら小文字に変換した値を返す
toupper(c)文字cが小文字なら大文字に変換した値を返す


サンプル

#include <stdio.h>
#include <ctype.h>

void main()
{
 int c;

 for ( c=0; c<=127; c++ ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "isalnumの結果" );
 for ( c=0; c<=127; c++ ) if ( isalnum(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "isalphaの結果" );
 for ( c=0; c<=127; c++ ) if ( isalpha(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "isasciiの結果" );
 for ( c=0; c<=127; c++ ) if ( isascii(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "iscntrlの結果" );
 for ( c=0; c<=127; c++ ) if ( iscntrl(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "isdigitの結果" );
 for ( c=0; c<=127; c++ ) if ( isdigit(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "isgraphの結果" );
 for ( c=0; c<=127; c++ ) if ( isgraph(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "islowerの結果" );
 for ( c=0; c<=127; c++ ) if ( islower(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "isprintの結果" );
 for ( c=0; c<=127; c++ ) if ( isprint(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "ispunctの結果" );
 for ( c=0; c<=127; c++ ) if ( ispunct(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "isspaceの結果" );
 for ( c=0; c<=127; c++ ) if ( isspace(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "isupperの結果" );
 for ( c=0; c<=127; c++ ) if ( isupper(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "isxdigitの結果" );
 for ( c=0; c<=127; c++ ) if ( isxdigit(c) ) printf( "%d:%c ", c, c );
 puts( "\n" );
 puts( "tolowerの結果\n" );
 for ( c=0; c<=127; c++ ) if ( isupper(c) ) printf( "%d:%c ", c, tolower(c) );
 puts( "\n" );
 puts( "toupperの結果\n" );
 for ( c=0; c<=127; c++ ) if ( islower(c) ) printf( "%d:%c ", c, toupper(c) );
 puts( "\n" );
}

C > 標準関数 > 文字検査/変換マクロ | comments (0) | trackbacks (0)

必要なヘッダファイル一覧

入出力stdio.h
一般stdlib.h
文字列string.h
時間time.h
文字ctype.h
数学math.h
ジャンプsetjmp.h
シグナルsignal.h
診断assert.h
C > 標準関数 > ヘッダ | comments (0) | trackbacks (0)

#define



#deifne PI 3.14159L
#define RAD(x) ( (x) * PI / 180.0 )


・マクロパラメータはカッコを付ける
・マクロ全体にカッコを付ける
・マクロパラメータにインクリメント/デクリメントは避ける
C > プリプロセッサ | comments (0) | trackbacks (0)

gets

連続1行入力の基本パターン

#include <stdio.h>
void main()
{
 char s[256];
 while ( ( gets( s ) ) != NULL )
  puts( s );
}


getsによる入力の終了はNULLで知る事ができる。
C > 標準関数 > コンソール入出力関数 | comments (0) | trackbacks (0)

getchar

連続1文字入力の基本パターン

#include <stdio.h>
void main()
{
 int c;
 while ( ( c = getchar() ) != EOF )
  putchar( c );
}


getcharによる入力の終了はEOFで知る事ができる。
C > 標準関数 > コンソール入出力関数 | comments (0) | trackbacks (0)

命名規約

・使用できるキャラクタは英数字、アンダーバー
・数字で始まる名前は不可
・名前の長さに制限は無いが先頭から31文字までが有効
・予約語は使用できないが、名前の一部に使われるのは構わない
・大文字と小文字は異なるものとして扱われる
C > 基礎 | comments (0) | trackbacks (0)

数値定数

数値定数例1例2
8進数0110345
10進数1001000
16進数0xff0XFFFF
指数1.234e2(=123.4)5.67e-2(=0.0567)
小数3.1442.195


サフィックス
サフィックス
long型、unsigned long型l L123456789l
unsigned int型、 unsigned long型u U123456789u
unsigned long型ul UL123456789ul
float型f F3.14f
double型l L3.14l


浮動小数点定数

float fVar1 = .314e1f;
float fVar2 = 314e-2f;
float fVar3 = 31.4e-1f;


これらの浮動小数点定数は、全てが3.14という値である。
C > 基礎 | comments (0) | trackbacks (0)

データ型

型指定子サイズ(ビット)範囲
char8-128〜127
unsigned char80〜255
short16-32768〜32767
unsigned short160〜65535
int32-2147483648〜2147483647
unsigned int320〜4294967295
long32-2147483648〜2147483647
unsigned long320〜4294967295
float323.4E-38〜3.4E+38(有効桁7桁)
double641.7E-308〜1.7E+308(有効桁15桁)
long double641.7E-308〜1.7E+308(有効桁15桁)

※32ビットCPUの場合
※指定を省略するとsignedと見なされる

int型のサイズを調べるプログラム

#include <stdio.h>
void main()
{
 printf( "%d\n", sizeof( int ) );
}

C > 基礎 | comments (0) | trackbacks (0)

予約語

autodoubleintstruct
breakelselongswitch
caseenumregistertypedef
charexternreturnunion
constfloatshortunsigned
continueforsignedvoid
defaultgotosizeofvolatile
doifstaticwhile
C > 基礎 | comments (0) | trackbacks (0)

データ表現

10進数2進数16進数
000
111
2102
3113
41004
51015
61106
71117
810008
910019
101010A
111011B
121100C
131101D
141110E
151111F
161 000010
   
311 11111F
3210 000020
   
6311 11113F
64100 000040
   
127111 11117F
1281000 000080
   
2551111 1111FF
2561 0000 0000100
   
5111 1111 11111FF
51210 0000 0000200
   
102311 1111 11113FF
1024100 0000 0000400
   
2047111 1111 11117FF
20481000 0000 0000800
   
40951111 1111 1111FFF
40961 0000 0000 00001000
   
81911 1111 1111 11111FFF
819210 0000 0000 00002000
   
1638311 1111 1111 11113FFF
16384100 0000 0000 00004000
   
32767111 1111 1111 11117FFF
327681000 0000 0000 00008000
   
655351111 1111 1111 1111FFFF
655361 0000 0000 0000 000010000
C > 基礎 | comments (0) | trackbacks (0)