e知識「e-chishiki.com」では、インドでの著名なIT著者、IT教育者、eセキュリティーの大家により作成された様々な種類のプログラミング言語に関する技術的なコンテンツを知識情報データーベースとして提供します。
オンライン書籍; インド式プログラミングバイブル C言語入門 (上)
第 1 章 : C言語入門 始めに(書籍のプレビュー)
インド式プログラミングバイブル C言語入門
この記事は、2008年4月から発売の「インド式プログラミングバイブル C言語入門 (上)」より掲載しました。書籍の情報は、こちらをご覧ください。
算術命令
C の算術命令では、=の左に変数名、=の右側に変数名と定数が記述されます。=の右側に記述される変数と定数は、+、-、*、/などの算術演算子で接続されます。
例: int ad ;
float kot, deta, alpha, beta, gamma ;
ad = 3200 ;
kot = 0.0056 ;
deta = alpha * beta / gamma + 3.2 * 2 / 5 ;
この例では、
- *, /, -, + が算術演算子です。
- = が代入演算子です。
- 2, 5 と 3200 は、整数定数です。
- 3.2 と 0.0056 は、実数定数です。
- ad は、整数変数です。
- kot、deta、alpha、beta、gamma は、実数変数です。
変数と定数は、まとめて「オペランド」と呼びます。オペランドは、「算術演算子」によって操作され、その結果は、代入演算子によって、左側の変数に格納されます。
C の算術式は、3つの種類に分けられます。各種類は、以下のように定義されます。
-
整数モードの算術式 - すべてのオペランドが、整数変数か、整数定数である算術式。
例: int i, king, issac, noteit ;
i = i + 1 ;
king = issac * 234 + noteit - 7689 ; -
実数モードの算術式 - すべてのオペランドが、実数変数か、実数定数である算術式。
例: float qbee, antink, si, prin, anoy, roi ;
qbee = antink + 23.123 / 4.5 * 0.3442 ;
si = prin * anoy * roi / 100.0 ; -
混同モードの算術式 - 整数のオペランドと実数のオペランドが混在している算術式。
例: float si, prin, anoy, roi, avg ;
int a, b, c, num ;
si = prin * anoy * roi / 100.0 ;
avg = ( a + b + c + num ) / 4 ;
算術式の実行が、どのように行われるのか理解することは、とても重要です。最初に、式の右側が、定数と、変数に格納されている数値を使って求められます。求められた値は、式の左側の変数に代入されます。
算術式は簡単に使えそうに思えるでしょうが、記述の際に間違いがよく起こるのも、算術式なのです。ここからは、式を詳細に検討してみましょう。次にあげる点に、特に注意してください。
- C では、=の左側には1つの変数しか置けません。つまり、z = k * l はOKですが、k * l = z は許されません。
- C は、除算演算子に加えて、剰余演算子もサポートしています。この演算子は、整数を別の整数で除算した余りを返します。つまり、10/2という式は5を返しますが、10%2は0を返します。剰余演算子(%)は、浮動小数には使えないことに注意してください。また、%を使った演算の場合、余りの符号は必ず被除数と同じになることに注意してください。つまり、-5%2は-1を返し、5%-2は1を返します。
-
算術式は、文字定数を文字変数に格納する際にも、使われます。
char a, b, d ;
a = 'F' ;
b = 'G' ;
d = '+' ;
この場合、各文字のASCII値が、変数に格納されます。ASCII値は、メモリ中の文字を表現します。「F」、「G」のASCII値は、それぞれ70、71となります(付録EのASCII表を参照してください)。 -
算術演算は、int(整数)、float(浮動小数)、char(文字)に対して行えます。
つまり、次の、命令文、
char x, y ;
int z ;
x = 'a' ;
y = 'b' ;
z = x + y ;
は、加算が、文字そのものではなく、その文字のASCII値に対して行われるため、まったく問題のない、有効な命令文です。「a」と「b」のASCII値は、それぞれ97と98なので、そこへの加算はもちろん可能です。 -
省略可能な演算子はありません。すべての演算子は、明示的に記述されなければなりません。次の例でも、bの後の乗算演算子は、必ず記述しなければなりません。
a = c.d.b(xy) 通常の計算式
b = c * d * b * ( x * y ) Cでの記述方法 他の高級言語とは異なり、C には指数演算が行える演算子がありません。つまり、次のような命令文は許容されません。
a = 3 ** 2 ;
b = 3 ^ 2 ;
指数演算を行いたい場合は、次のような方法で実装できます。# include <math.h> # include <stdio.h> void main( ) { int a ; a = pow ( 3, 2 ) ; printf ( “%d”, a ) ; }このpow( )関数は、標準ライブラリ関数です。pow( )は3を、2乗まで計算するために使用されています。#include <math.h>は、プリプロセッサ指令です。このプリプロセッサ指令は、pow( )関数が確実に正しく動作するように使用しています。標準ライブラリ関数については第5章で、プリプロセッサについては第7章で、詳しく述べています。
- +、-、*、/に加えて、C にはもう1つの算術演算子が用意されています。剰余演算子と呼ばれるその演算子は、記号%を使って記述します。/が除算の商を返すのに対し、%は余りを返します。つまり、5%3と言う式は、余りである2を返します。



