開発環境
- OS X Lion - Apple (UNIX) (OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- C (プログラミング言語)
- Clang (コンパイラ)
C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)の4章(基本的な宣言および式)、4.10(浮動小数点数型の除算と整数型の除算)、設問4-3を解いてみる。
その他参考書籍
- プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)
- プログラミング言語Cアンサー・ブック 第2版 (クロビス・L.トンド、スコット・E.ギンペル(著)、矢吹 道郎(翻訳))
設問 4-3.
printfの引数のformatの%dの数より第二引数以降の式の数の方が少ない場合、不足分の式の値として意味のない数値が生成されるから。(警告は出るけどエラーにはならない。)
コード
sample.c
#include <stdio.h> int answer; int main(int argc, char *argv[]) { answer = 2 + 2; printf("The answer is %d\n"); printf("The answer is %d\n", answer); return (0); }
入出力結果(Terminal)
$ cc -g -o sample sample.c sample.c:7:28: warning: more '%' conversions than data arguments [-Wformat] printf("The answer is %d\n"); ~^ 1 warning generated. $ ./sample The answer is 1810680592 The answer is 4 $ ./sample The answer is 1728338704 The answer is 4 $
2回の実行結果で異なる数値が出力されたので、コンパイル時に数値が生成される訳ではなく、実行時に数値が生成されるみたい。
0 コメント:
コメントを投稿