データの計算

最終更新日:2004-06-23.

今回は、変数に代入されている値を計算したり、
変数のアドレスを計算してみましょう。

・加減乗除

変数に代入された値を計算したり、値を計算したものを
変数に代入することができます。

それには以下のような算術演算子を使います。

+ 足し算
- 引き算
* かけ算
/ わり算
% あまり

例えば、以下のようなint型の変数があるとします。

int i;
int j;
int k;
int l;

ここに以下のような値を計算して代入します。

i=1+2;
j=10-2;
k=i*j;
l=k/(i*2);

上記のiには3が、jには8が、kには24が、lには4が代入されます。

データの代入は右辺から左辺へ行われます。
右辺の中の計算は優先順位に従って行われます。

i+jiにjを足す。
i-jiからjを引く。
i*jiにjをかける。
i/jiをjでわる。
i%jiをjでわったあまり。

また、以下のような式があるとします。
i+j*k-l;

これは、jにkをかけてからiにそれを加えてlを引いたものが値になります。

上記のように加減乗除が混在した式では、乗除を先に計算してから
加減算を行います。

また、 ( ) の付いた式、
(i+j)*k;
では、 ( ) の中を先に計算します。
これらは、数学などの規則と同じです。

その他に、例えばchar型の変数の値を計算することもできます。

char c1='A';
char c2='a';
char c3;

c3=c2-c1;

上記は、半角の小文字'a'と半角の大文字'A'の差を求めています。
これは、文字の大文字と小文字を変換するときなどに使用できます。

他に、変数のアドレスを計算することができます。

char word[10]="JAPAN";
char *p, *q;
int i;

p=&word[0];
q=&word[5];
i=q-p;

上記q-pの値iは5です。
これは、文字列の長さを計算しています。

上記のような式を書く際、ある式においては省略した書き方ができます。

i=i+ji+=j;
i=i-ji-=j;
i=i*ji*=j;
i=i/ji/=j;
i=i%ji%=j;

では、ソースにしてみましょう。
+------------------------------------------------------------+
/* filename=no017-1.c */
/* include */
#include <stdio.h>
/* main */
int main( )
{
int i, j, k;
i=1;
j=10;
k=0;
printf("%dから%dまでの数字の和を求める。\n", i, j);
while( i<=j ){
k=(k+i);
i++;
}
printf("答えは%d。\n", k);
i=100;
j=9;
k=i;
printf("%dから%dを繰り返し引いて最後の余りを求める。\n", i, j);
while( k>j ){
k=(k-j);
}
printf("答えは%d。\n", k);
i=2;
j=8;
k=1;
printf("%dの%d乗を求める。\n", i, j);
while( k<j ){
i=(i*2);
k++;
}
printf("答えは%d。\n", i);
return 0;/* 終了 */
}
+------------------------------------------------------------+

上記のソースをコンパイルして実行すると以下のように表示されました。
1から10までの数字の和を求める。
答えは55。
100から9を繰り返し引いて最後の余りを求める。
答えは1。
2の8乗を求める。
答えは256。

戻る