- 締切済み
代入式
int b; b = 1; printf("b=%d\n",b); b = 3; printf("b=%d\n",b); のように、bの値が2つあるときは、printfも2つないといけないんですか? 1つだったら、後に書かれたb=3の方を実行するんですか? Visual Studio 2005 より
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- zwi
- ベストアンサー率56% (730/1282)
>b = 1; >b = 3; >printf("b=%d\n",b); 確かに数式としてみると変だと思います。 しかしながら、大抵のプログラミング言語が最低限のルールとして、上のステートメント(文)から順に実行するというルールに従って動いています。それは、PCを動かしてるCPUのが1度に1つの仕事しか出来ないからです。 ですので、bに1を代入した後で、bに3を代入していますから、1を代入したことは忘れますというかbという入れ物は1つしかないので覚えてられません。 その後で、printfが実行されるので、b=3というのが出力されます。 まぁその前に同時にすべてのステートメントが実行されたらprintfも同時実行されるので、bが不定値になりますが。
- zwi
- ベストアンサー率56% (730/1282)
「float と double」だったらどれか1つに理解できたのかどうかを書いてくれば良かったですね。 「デバックして何を入力すればいいですか?」だと、さすがに補足要求の無視は回答してくれた人にひどいと思いませんか?自分が回答した側の気持ちになれば分かると思いますよ。 掲示板も日常会話と同じで言葉のキャッチボールです。何か聞いて、答えてくれた人を日常会話で無視しますか? そもそも、この質問は入門書を読んでいれば分かるような質問だと思うのですが、入門書は何か読まれているんでしょうか?
補足
入門書のプログラムなんですが、ちょっと書いていないので質問しました。 b = 1; b = 3; printf("b=%d\n",b); では、1か3のどちらを表示するのか分からなくなってしまいませんか? 実際上記のようなことがあって、そのときには「先の値(ここではb=1;)はないことと同じ」だって先生が言っていていましたが本当ですか?
- maku_x
- ベストアンサー率44% (164/371)
> 1つだったら、後に書かれたb=3の方を実行するんですか? この真意は図りかねますが、printf を1文で済ませたいのであれば、 int a=1, b=3; printf("a=%d, b=%d\n", a, b); と書けばよいと思います。
- zwi
- ベストアンサー率56% (730/1282)
「float と double」では、何も書かずに締め切り。 「デバックして何を入力すればいいですか?」では補足要求を無視。 そんなことをしていると、誰も解答を書いてくれないなりますよ。
補足
回答していただいた全てにお礼を書くんですか?
お礼
こういうプログラムを書く機会は少ないかと思いますが、頭に入れておきます。ご回答ありがとうございます。