0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

printf()の中で'?'を利用してtrueかfalseを判定する方法(三項演算子)

Posted at

ネタバレあるよ

この記事を書いた理由

このブログは、三項演算子の概念にまだ馴染みがない方、もしくはこれまでif-else文のみで条件分岐を書いてきた方に特におすすめです。
シンプルな'?'を利用して真偽値を判定できるので一度使い方を覚えれば、一行で解決できる可能性が広がります。

読者層

・三項演算子(?)の使い方に不慣れな方: printf()で簡単に真偽値を判定する方法を学べます。
・コードを見ることで学びたい方: 他の人の書いたコードから学ぶことの大切さを知っているけども中々見れない方の背中を押します。
・過去の自分に向けて: もし私がこの問題を解く前に知っておきたかったことを、同じ悩みを持つ方々と共有します。

ACまでのポイント

(問題を見ながら読んでみてね)
・変数 A と B の和により、出力する整数を判定する。
・出力する整数は0〜9の範囲 && 変数 A と B の和以外の整数。
・問題文の制約の3行目に、変数 A と B の和が9以下であると記述があるので和が9と同じであれば、0を出力、それ以外は変数 A と B の和に+1をしたものを出力するというプログラムを書きました。

ACしたコード

#include <stdio.h>
int main(void){
    int a;
    int b;
    
    scanf("%d%d",&a,&b);    
    // printf("%d %d\n",a,b);    
    
    int result = a + b;
    if(result == 9){
        printf("0\n");
    } else {
        printf("%d\n",result + 1);
    }
    return(0);
}

参考にした解答(感謝)

三項演算子を利用するメリット

・C言語においてはbool型を利用しないということは"#include "を記述する手間を省ける
・三項演算子は式なので直接変数に代入したり、他の式の中で利用できる
・ACしたコードで書いたような条件分岐で分岐するよりコードが読みやすくなる

三項演算子を使ってACしたコード

#include <stdio.h>
int main(void){
    int a, b;
    scanf("%d%d", &a, &b);
    printf("%d\n", (a + b == 9) ? 0 : a + b + 1);
    
    return(0);
}

そもそもbool型ってなんだっけ?

・真偽値を判定できる
・C言語においてはstdbool.hというヘッダファイルをインクルードすることで bool、true、false という名前で扱えるようになる

最後に

・提出時間が早い方を中心に回答を拝見したおかげで三項演算子に触れてみようと思えました。
・他の方の回答を見るのをちょっと面倒に感じるかもしれませんが、ぜひ見てみてください。やってみるとブログも書こうと思えたので良かったです!

参考にした記事(感謝)

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?