2016-03-26 10 views
1

値を定義します書くことができますそして、またはステートメント私は「and」と「or」 、そのようなあなたは、Luaの、などの言語、の場合と同様に <pre><code>int i = true && 5 || 3; </code></pre> <p></p>として、変数の値を定義するときに使用したい

i = true and 5 or 3 

これは可能ですか?

私は、単純なコンソールベースのC++プロジェクトを試してみましたが、値の両方が1

#include "stdafx.h" 
#include <iostream> 

void main() 
{ 
    int test = (true && 5) || 1; 
    int test2 = (false && 6) || 2; 

    std::cout << "Test: " << test << std::endl << "Test2: " << test2; 
    while(true){} 
} 
+1

ここで期待している動作は何ですか? –

答えて

3

C++を探している疑いがあるLuaのではないとして返さ。

ルアでは、true and 5の結果は5になります。これは単にLuaがブール式でどのように動作するかです。

これは、C++がブール式でどのように動作するかではありません。 C++では、ブール式の結果はブール値になります。つまり、trueまたはfalseのいずれかです。

あなたは条件に基づいて2つの値の間に選択したい場合、我々はそのための演算子を持っている:

int i = true ? 5 : 3; 

条件がtrueの場合、あなたが:前の値を取得します。 falseの場合は、:の後の値を取得します。あなたが必要なもの

1

私はあなたがint test = true ? 5 : 1;

1

は条件式である:

int i = true ? 2 : 5; 

この場合、私たちは本当にC++ 11のように望んでいた場合iは2

+0

ありがとう!これは本当に役に立ちました! – Drahsid

0

になります(私たちandを与えると、 &&||の同義語としてorキーワード)、コンプライアンスへのほとんどの強力な腕のC++コンパイラ可能性があり、それは、このコンパイルするために取得:

int x = when_true(b) and 5 or 6; 
0を

#include <iostream> 

struct maybe_int { 
    bool cond; 
    int x; 

    operator int() const { return x; } 
}; 

int operator || (const maybe_int& l, int r) { 
    if (l.cond) return l.x; 
    return r; 
} 

struct when_true { 
    when_true(bool condition) 
    : _cond(condition) 
    {} 

    auto operator&&(int x) const { 
     return maybe_int { _cond, x }; 
    } 

    bool _cond; 

}; 


int main() 
{ 
    using namespace std; 

    auto b = false; 
    int x = when_true(b) and 5 or 6; 
    cout << x << endl; 
    return 0; 
} 

私の提案は、あなたが仕事でこの種のものを試していないということでしょう:私たちはいくつかの足場を提供する必要があり、これを行うためには

関連する問題

 関連する問題