数式処理
C 言語の数式は、比較的日常表記と近いものでわかりやすくなっています。たとえば、
1+1
(2+11)*3
6.0f+45.0f/15.0f
といった感じです。掛け算はアスタリスク * を、割り算はスラッシュ / を使います。小学校で習うように、乗算除算は加算減算よりも先に計算されます。優先度を制御するためには小カッコ ( ) を使います。中カッコ { } や大カッコ [ ] は別の意味で使われるので優先度制御のためには使えません。小カッコを何重にも入れ子 (ネスト) して使います。演算の種類を示す記号 (+ - * / 等) を演算子 (えんざんし、オペレータ) といい、演算対象となるデータをオペランドといいます。代入のイコール = も実は演算子です。C 言語にはこの他にもたくさんの演算子があり、詳細な優先順位が定められていますが、それらは C 言語の専門書や解説サイトに譲るとして、ここでは実際に数式をスクリプトで使ってみましょう。
数式の演算結果を表示する
void main(){ int a = 1, b = 11, c; float d = 45.0f; SysDialog(1+a); SysDialog((2+b)*(c = 3)); SysDialog(6.0f+d/15.0f); }
解説
数式をそのまま SysDialog 関数に放り込んでいます。もちろん数式に変数を使用することもできます。また、2 個目の SysDialog では、c という変数に 3 という値の代入を行い、その値をそのまま計算に使っています。このように、代入演算子を数式中に入れると代入結果をそのまま演算に使用することができます。ただし、代入演算子の優先順位はかなり低い位置付けとなっているのでカッコが必要です。なお、関数呼び出しの ( ) は演算子の優先順位を制御するための ( ) とは別のもので、関数呼び出しの ( ) は常に必要なので気をつけてください。実行結果はどうでしたか?計算結果が正しく表示されましたね。
文字列の結合
数値は上の例のように普通に扱うことができます。プラス + 演算子は、文字列 (string 型のデータ) に対しても使うことができます。文字列に対して + 演算子を使うと、両側のオペレータをひとつの文字列に結合します。+ 演算子の左右に文字列と数値を使うと、数値が文字列に変換されて結合されます。ただし、この場合文字列が + の左側になければならず、文字列の左に数値を結合したい場合は空の文字列 "" を数値の左に + でつなげなければなりません。なお、- * / などの演算子は文字列には使用できません。それでは、文字列結合演算子 + の使用例を見てみましょう。
文字列結合演算子の使用例
void main(){ string str1 = "apple", str2 = "円周率"; int a = 15; double b = 3.1415926; SysDialog(str1+str2); SysDialog(str1+a); SysDialog(str2+b); SysDialog(""+a*b+" = "+a+"*"+b); }
解説
内容は特に難しいことはありませんね。最後の行では、数値演算と文字列結合を同時に行っています。また、このとき一番左に数値を結合したいので空の文字列を左に結合しているのに注意してください。
演習問題
上記スクリプトの最後の行で、a*b となっている箇所を a-b に変更してコンパイルするとエラーになる。それはなぜか。また、解決法を示し、コンパイルを成功させよ。