2012年3月24日土曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) の6章(条件文と制御文)6.8(どこにでも代入できることによる副作用)設問6-1を解いてみる。

6-1.

問題のプログラムを実行すると、誰もが0ドルの借入金になってしまうのは、if文の評価の部分が等価「==」を使わずに代入式「=」になっているから。(balance_owedに0が代入されて、if文0が評価されて(偽)、else文でbalance_owedが0で出力される。)

修正。

コード(TextWrangler)

#include <stdio.h>
char line[80];
int balance_owed;
int main(){
  printf("Enter number of dollars owed: ");
  fgets(line, sizeof(line), stdin);
  sscanf(line, "%d", &balance_owed);
  if(balance_owed==0){
    printf("You owe nothing.\n");
  } else {
    printf("You owe %d dollars.\n", balance_owed);
  }
  return (0);
}

入出力結果(Terminal)

$ cc -g -o c_program c_program.c
$ ./c_program
Enter number of dollars owed: 100
You owe 100 dollars.
$ ./c_program
Enter number of dollars owed: 0
You owe nothing.
$

0 コメント:

コメントを投稿