開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料、light版)
- 言語: C
- コンパイラ: UNIX ccコンパイラ (汎用UNIX)
『実践プログラミング 第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 コメント:
コメントを投稿