标签: conditional-operator

没有中间表达的三元运算符

最近,我意识到,你可以使用GCC和铛三元运营商没有中间(?:? :工程),它会插入第一个表达式到中:

// outputs 2
cout << (2 ?: 4);
// outputs 3
cout << (0 ?  : 3);
Run Code Online (Sandbox Code Playgroud)

这个标准在哪里?我看了,没看到任何关于它的事.

c++ gcc ternary-operator clang conditional-operator

9
推荐指数
1
解决办法
842
查看次数

C++ 三元运算符,有什么区别吗?

我正在阅读以下内容的区别:

1)

std::string test = level > 10 ? "Master" : "Beginner";
Run Code Online (Sandbox Code Playgroud)

2)

std::string test;
if (level > 10)
    test = "Master";
else
    test = "Beginner";
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,我被告知在第二种选择中,正在创建一个我不理解的临时值。

我了解到,当我们在没有初始化的情况下声明一个变量时,它会占用垃圾,因此编译器只保存一个内存位置,而不会“工作”来更改其值。

c++ initialization conditional-operator

9
推荐指数
2
解决办法
569
查看次数

Javascript在三元运算符中使用单个等待

我有一种情况,我想在三元运算符中使用 await。我想根据条件将值设置为字面值或承诺的解析值。希望下面的代码能帮助描述我想要做什么,但我很确定它不正确,所以考虑它是伪代码。

const val = checkCondition ? "literal value" : await promiseGetValue();
Run Code Online (Sandbox Code Playgroud)

其中 promiseGetValue() 返回一个解析为文字值的承诺。这样做的正确方法是什么?

javascript conditional-operator async-await es6-promise

9
推荐指数
2
解决办法
2217
查看次数

三元从句中连续两个问号是什么意思?

最近在一段Java代码中看到了这个三元运算语句:

int getVal(Integer number, boolean required) {
    Integer val = number == null ? required ? 1 : 2 : 3;
    return val;
}
Run Code Online (Sandbox Code Playgroud)

我从未见过像这样连续有两个问号的三元语句(没有任何括号)。如果我使用输入值,我可以1返回 ifnumber == null3返回,但似乎不需要什么,2永远不会返回。

这个语句什么意思(即我应该如何将它读作true/false条件的单词语句)以及需要2返回的输入是什么?

java conditional-operator ternary

9
推荐指数
2
解决办法
176
查看次数

三元运算符,如果我避免写“表达式 2”,它会起作用,但如果我不写“表达式 3”,则会出现错误

代码

#include<iostream>

int main()
{
    int a=4,b,c;
    a==3 ? : b=a*a ;     // Works fine
    a==4 ? c=a*a : ;     // ERROR Expected Primary expression before ;
}
Run Code Online (Sandbox Code Playgroud)
  • 第一个条件语句

    我没有写“表达式 2 ”,但它不会产生错误

  • 第二个条件语句

    我没有写“表达式 3 ”,它给出了一个错误

那么为什么它在“表达式 2 ”和“表达式 3 ”中有所区别?

c++ conditional-operator

9
推荐指数
1
解决办法
371
查看次数

应用于“const char* const&amp;”和“char* &amp;”的三元运算符的返回类型是什么?

考虑以下无用的代码片段,它在不同的编译器中给出不一致的结果(演示

\n
#include <type_traits>\n\nchar* dummy;\nconst char* const& a = dummy;\n      char*      & b = dummy;\nusing T = decltype(true ? a : b);\nstatic_assert(std::is_same<const char* const&, T>::value); // pass in Clang and MSVC:c++20\nstatic_assert(std::is_same<const char*       , T>::value); // pass in GCC   and MSVC:c++17\n
Run Code Online (Sandbox Code Playgroud)\n

GCC认为T存在const char*于C++的所有版本中,而Clang认为存在const char* const&于所有版本中;MSVC 认为Tconst char*C++17 和const char* const&C++20 下。

\n

从语言律师\xe2\x80\x99s的角度来看,我应该相信哪个编译器?

\n

c++ conditional-operator language-lawyer

9
推荐指数
0
解决办法
223
查看次数

有条件的运营商问题

我在使用条件运算符获取对象的引用时遇到了一些麻烦.我有一个类似于这样的设置:

class D
{
    virtual void bla() = 0;
};

class D1 : public D
{
    void bla() {};
};

class D2 : public D
{
    void bla() {};
};

class C
{
public:
    C()
    {
        this->d1 = new D1();
        this->d2 = new D2();
    }

    D1& getD1() {return *d1;};
    D2& getD2() {return *d2;}
private:
    D1 *d1;
    D2 *d2;
};

int main()
{    
    C c;    
    D& d = (rand() %2 == 0 ? c.getD1() : c.getD2());    
    return 0;    
}
Run Code Online (Sandbox Code Playgroud)

编译时,这给了我以下错误:

WOpenTest.cpp: …
Run Code Online (Sandbox Code Playgroud)

c++ conditional-operator

8
推荐指数
1
解决办法
2035
查看次数

"?:"和目标c中的if语句之间有什么区别吗?

使用'?:'条件和简单的'if-then-else'语句之间有区别吗?它只是另一种方式,或者它实际上使用更少的空间/花费更少的时间来阅读比'if'语句?

例:

如果声明:

if (item1.isEqualToString:@"2") //If statement
    [self doSomething];
else
    [self doSomethingElse];

item1.isEqualToString:@"2" ? [self doSomething] : [self doSomethingElse]; //'?:' statement
Run Code Online (Sandbox Code Playgroud)

conditional if-statement objective-c conditional-operator inline-if

8
推荐指数
2
解决办法
2万
查看次数

得到错误:不能取'int'类型的右值的地址

我尝试使用新编译器编译旧代码并得到下一个错误:

error: cannot take the address of an rvalue of type 'int'
Run Code Online (Sandbox Code Playgroud)

下面是两行示例 - 一行编译,另一行编译错误

struct mstct {
    int myfield;
    int myfield2[5];
    int myfield3[5];
};

typedef struct mstct db_data_px;

int foo(int a, int b, int c){

  //the next code compiles successfully.
  unsigned val1 = ((18 == c) ? ((unsigned) & (((db_data_px *) 0)->myfield)) : ((unsigned) & (((db_data_px *) 0)->myfield3[b]))); //successes


  //the next code is failing
  unsigned val2 = (unsigned) & ((18 == c) ? (((db_data_px *) 0)->myfield) : (((db_data_px *) …
Run Code Online (Sandbox Code Playgroud)

c gcc ternary-operator conditional-operator addressof

8
推荐指数
1
解决办法
1万
查看次数

如何根据百里香的条件将风格应用于div?

我有一个<div>块需要设置display:nonedisplay:block基于条件.html看起来像这样,

<div style="display:none;"> 
    //some html block content
</div>
Run Code Online (Sandbox Code Playgroud)

我在百里香试过了以下代码,

<div th:style="${condition} == 'MATCH' ? display:block : display:none"> 
    //some html block content
</div>
Run Code Online (Sandbox Code Playgroud)

但上面的表达不起作用.抛出org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression:错误信息.

我可以th:classappend设置一些课程并完成这项工作,但想知道elvis/ternary操作员是否会支持thymeleaf th:style标签.

conditional-operator thymeleaf

8
推荐指数
1
解决办法
2万
查看次数