if分の条件分岐について


 2011-01-11 19:31:59  No: 72174  IP: [192.*.*.*]

if(r>l){
//処理1
//rとlの値を変更する処理
、、、
}else{
//処理2
//rとlの値を変更する処理
、、
}

とした場合、処理1と処理2が両方実行されることはあるのでしょうか?

編集 削除
仲澤@失業者  2011-01-11 20:38:06  No: 72175  IP: [192.*.*.*]

ありません。

(r>l)の判定は、最初の1回のみです。
その後、r とlの値が変更になっても、再度(r>l)の判定を
評価されることはありません。

編集 削除
 2011-01-11 23:13:35  No: 72176  IP: [192.*.*.*]

if(r>l){
//処理1
//rとlの値を変更する処理
、、、
}else if(r<l){
//処理2
//rとlの値を変更する処理
、、
}
でも処理2は実行されないということですか?

編集 削除
ryo  2011-01-12 00:42:30  No: 72177  IP: [192.*.*.*]

されない。
2個目のifは、最初のifで判定が負だったときのみに、処理される

なんでもかんでも「上から順」ではなく、
if〜else(if)は、流れが"分岐"しているので、
処理1を行った場合「else〜」の行以下、処理2も含めて、飛び越える。


頭ん中だけで考えないで、試してみれ

編集 削除
仲澤@失業者  2011-01-12 10:28:56  No: 72178  IP: [192.*.*.*]

sさんは何がしたいのでしょうか。それを詳しく説明すると
もっとましな回答が出るかもしれません。

ちなみに、いわゆる「矛盾」をC/C++言語で表現することは
できません。これは、コンピュータプログラムは「実行順番」
と「時間経過」の概念が前提となっているため、同時性を
前提とするような論理学上の概念をコード上で表現することは
できません。

編集 削除