閉じる
午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
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が入ると考えたのですが、この考えが間違っている理由を教えて欲しいです。
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をリターンする。いかがでしょうか。
2026.04.16 18:54
すぎさん(No.3) 
if文は条件式"()の中身"が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)になる。のようなイメージでしょうか。
そうならすごく納得が行きます。
2026.04.16 21:03
すぎさん(No.5) 
その理解で合ってます
2026.04.16 22:37
返信投稿用フォーム
お名前
顔アイコン

本文(コミュニティガイドライン⇱を順守して適切な投稿を心がけましょう)
🔐投稿削除用のパスワード(任意)
投稿プレビュー
※CBT試験では出題内容の公開が禁止されているため、直接的・間接的を問わず、出題内容や難易度を尋ねる質問は厳禁です。
※宣伝や迷惑行為を防止するため、当サイト、姉妹サイト、IPAサイト以外のURLを含む文章の投稿はできません。
投稿記事削除用フォーム
投稿No. パスワード 

Pagetop