标签: conditional-operator

有条件的运营商问题

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

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
查看次数

为什么条件运算符没有正确地允许使用"null"来赋值为可空类型?

可能的重复:
可空类型和三元运算符.为什么这不起作用?
具有可空<value>类型的条件运算符赋值?

这将无法编译,说明"无法确定条件表达式的类型,因为'System.DateTime'和''"之间没有隐式转换

task.ActualEndDate = TextBoxActualEndDate.Text != "" ? DateTime.Parse(TextBoxActualEndDate.Text) : null;
Run Code Online (Sandbox Code Playgroud)

这很好用

 if (TextBoxActualEndDate.Text != "")
    task.ActualEndDate = DateTime.Parse(TextBoxActualEndDate.Text);
else
    task.ActualEndDate = null;
Run Code Online (Sandbox Code Playgroud)

.net c# nullable conditional-operator

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

如何使用Nullable Int的条件运算

一个小问题.任何想法的人为什么这不起作用?

int? nullableIntVal = (this.Policy == null) ? null : 1;
Run Code Online (Sandbox Code Playgroud)

null如果左手表达式为True,我试图返回,否则1.看似简单,但给出了编译错误.

无法确定条件表达式的类型,因为null和之间没有隐式转换int.

如果我用任何有效的替换nullin ,那么没有问题.? null : 1int

c# nullable conditional-operator

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

8
推荐指数
3
解决办法
1107
查看次数

C++条件运算符

我曾经见过C++,其分配值的-wired-操作者如果比..更大
它的组合?,<=

例如,如果value大于x,则x = value

不是故意的 x=(x<value)x:value

这是某种形式 x<?=value

但我完全记不起来了,也无法在网上找到它......有人能提醒我吗?

谢谢,

c c++ operators conditional-operator

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

有条件地在数组中添加元素

我怎样才能'b' => 'xyz'在array()语句中有条件地添加下面的数组?

$arr = array('a' => abc)

三元运算符不允许我这样做

php arrays conditional conditional-operator

8
推荐指数
4
解决办法
5250
查看次数

使用一个"in"语句测试多个对象是否在列表中(Python)

可能重复:
Python检查列表中是否包含以下所有项目

所以我想测试word和word1是否都在列表中.当然,我可以写:

if word in lst and word1 in lst:
    do x
Run Code Online (Sandbox Code Playgroud)

但我想知道我是否可以将该陈述缩短为:

if (word and word1) in lst:
    do x
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用,但有什么有效的相似之处呢?

我尝试了以下内容,但正如您所看到的,它不会产生预期的结果.

>>> word in lst
True
>>> word1 in lst
True
>>> (word, word1) in lst
False
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢你的答案,我想我现在已经很清楚如何做到这一点.

python conditional-operator python-3.x

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

"?:"和目标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 a=2, b=22;
a>b?a:b=222;
Run Code Online (Sandbox Code Playgroud)

这段代码给了我一个错误.我认为这是因为条件运算符返回值ab基于条件的值,因此该值不能用作Lvalue.就我而言,22 = 222,所以这是一个错误.

int *i, *j, a=2,b=222;
i = &a;
j = &b;
a>b?i:j=&a;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,编译器也会抛出错误.根据我的假设,与前一种情况一样,这里返回值为ij.所以0x123 =&a; [让0x123是存储在j中的地址].无效吗?

此时,我进行了搜索.我尝试过0x123 = &a;,但编译器仍然会抛出错误.我想编译器不允许我出于安全原因修改内存位置.

请让我知道我的所有假设都是有效的,并告诉我如果允许程序员操作内存位置会发生什么安全错误.我假设内存位置可能包含不应修改的值.

编辑 错误是error: lvalue required as left operand of assignment.

c conditional-operator

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

得到错误:不能取'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万
查看次数