データの計算
最終更新日: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。
戻る