Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

5章の論理否定演算子のコードについて #149

Open
chiepomme opened this issue Dec 3, 2019 · 1 comment
Open

5章の論理否定演算子のコードについて #149

chiepomme opened this issue Dec 3, 2019 · 1 comment

Comments

@chiepomme
Copy link

chiepomme commented Dec 3, 2019

5章 https://github.com/EzoeRyou/cpp-intro/blob/master/005-the-restaurant-at-the-end-of-the-branch.md の、論理否定の説明のところでうまく理解ができず質問させていただきたく issue を立てさせていただきました。

以下の部分で「ロケットが発射可能なときに実行される」というコメントがあるのですが、コードは「ロケットが発射可能ではないときに実行される」ように読めます。ただ、そうすると一つ前の例と is_rocket_ready_to_launch() の中以外は同じになってしまいますし、実行される内容も発射可能ではないはずなのに、発射シーケンスに入ってしまうように読めます。

int main()
{
    // ロケットが発射可能なときに実行される
    if ( !is_rocket_ready_to_launch() )
    {   // カウントダウン
        std::cout << "3...2...1...Hallelujah!\n"s ;
    }
}

本文の説明の方も、

論理否定演算子を使うと、falseのときのみ実行されてほしい条件分岐が書きやすくなる。
同じように、trueのときに実行されてほしくない条件分岐も書ける。

と2つの例が同じ条件について例示をしているように読めてしまい、この2つでどういう違いがあるのかわからず、間違いであるのか私の理解が追いついていないのかわからず困っております。

@yumetodo
Copy link
Contributor

yumetodo commented Dec 3, 2019

trueのときに実行されてほしくない条件分岐も書ける。

が主題なのだからこのようになるべきだったのではないでしょうか?

// ロケットが発射可能かどうかを返す関数
bool is_rocket_ready_to_launch()
{
    // もういいよ
    return true ;
}

int main()
{
    // ロケットが発射可能なときに実行されてほしくない
    if ( !is_rocket_ready_to_launch() )
    {   // もうしばらくそのままでお待ちください
        std::cout << "Standby...\n" ;
    }

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants