HOME»基本情報技術者試験掲示板»科目Bでわからないところがある。
投稿する
科目Bでわからないところがある。 [6379]
masさん(No.1)
ある参考書の問題なのですが、
1 ⭕️文字型 functionA()
2 if(functionB()){
3 ret←a
4 else
5 ret←c
6 end if
7 return ret
8 ⭕️整数型 functionB()
9 return false
とあり、トレースの結果はretの戻り値は"c"となります。
ここで疑問なのですが、2行目のif(funcitonB)は実行されません。
しかしif(functionB)は、if(false)つまり、「もし[false]なら以下の処理を実行するよ」という意味合いにはならないのですか?
ですので僕自身はretにaが入ると考えたのですが、この考えが間違っている理由を教えて欲しいです。
1 ⭕️文字型 functionA()
2 if(functionB()){
3 ret←a
4 else
5 ret←c
6 end if
7 return ret
8 ⭕️整数型 functionB()
9 return false
とあり、トレースの結果はretの戻り値は"c"となります。
ここで疑問なのですが、2行目のif(funcitonB)は実行されません。
しかしif(functionB)は、if(false)つまり、「もし[false]なら以下の処理を実行するよ」という意味合いにはならないのですか?
ですので僕自身はretにaが入ると考えたのですが、この考えが間違っている理由を教えて欲しいです。
2026.04.16 18:11
みかんさん(No.2)
if(false)の解釈を間違っているのではありませんか。
質問主さんは「if(false)」という部分を「条件がfalseの時に、直後の処理(ret←a)をする」と解釈されたのだと思いますが、プログラミングでは if は真偽をチェックするものです。
すなわち、以下のような解釈になります。
1 ⭕️文字型 functionA()
2 if(functionB()){ // functionB() は false を返す
3 ret←a // □条件が「真(true)」の時だけ実行
4 else // ★条件が「偽(false)」の時に実行
5 ret←c // ★ここが実行される
6 end if
7 return ret
8 ⭕️整数型 functionB()
9 return false
順を追っていくと、
functionA を実行
↓
if(functionB())の評価
↓
functionB() がfalseを返す
↓
if(false)となるため、3行目は実行されず
4行目のelse以降が実行される
↓
retにcが代入され、cをリターンする。いかがでしょうか。
質問主さんは「if(false)」という部分を「条件がfalseの時に、直後の処理(ret←a)をする」と解釈されたのだと思いますが、プログラミングでは if は真偽をチェックするものです。
すなわち、以下のような解釈になります。
1 ⭕️文字型 functionA()
2 if(functionB()){ // functionB() は false を返す
3 ret←a // □条件が「真(true)」の時だけ実行
4 else // ★条件が「偽(false)」の時に実行
5 ret←c // ★ここが実行される
6 end if
7 return ret
8 ⭕️整数型 functionB()
9 return false
順を追っていくと、
functionA を実行
↓
if(functionB())の評価
↓
functionB() がfalseを返す
↓
if(false)となるため、3行目は実行されず
4行目のelse以降が実行される
↓
retにcが代入され、cをリターンする。いかがでしょうか。
2026.04.16 18:54
すぎさん(No.3)
if文は条件式"()の中身"がtrueのときのみ、発動します。
if(false)は何も起きません。
何か起こそうとするなら
if(functionB()=false){
処理
}
とし、
functionB()=false→false=falseなのでtrue
ということになります。
if(false)は何も起きません。
何か起こそうとするなら
if(functionB()=false){
処理
}
とし、
functionB()=false→false=falseなのでtrue
ということになります。
2026.04.16 20:43
masさん(No.4)
連絡ありがとうございます。
a=4
b=5
if(a>b){
がif(false)になる。のようなイメージでしょうか。
そうならすごく納得が行きます。
a=4
b=5
if(a>b){
がif(false)になる。のようなイメージでしょうか。
そうならすごく納得が行きます。
2026.04.16 21:03
すぎさん(No.5)
その理解で合ってます
2026.04.16 22:37
