标签: conditional-operator

什么"?" 用Java表示?

我不知道问号(?)在java中代表什么,我正在做一个小程序,一个Nim游戏.正在寻找一本书,寻求帮助并看到这句话:

int pinsToTake = (min >= 2) ? 2 : 1;
Run Code Online (Sandbox Code Playgroud)

我不明白,它?代表什么,它可以与if语句有关,但你把它放在变量中?而且:可以是"其他"的东西?(我刚才所说的这些事情可能会产生误导)

java ternary-operator conditional-operator

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

Coffeescript中的存在条件赋值运算符

在阅读Coffeescript文档时,我对存在运算符的文档很少感到困惑.文件说明

对于您可能正在处理数字或字符串的情况,It(?=)也可用于比||=提供更安全的条件分配.

?=||=运营商之间有什么区别?何时应该使用哪一个?

operators conditional-operator coffeescript

10
推荐指数
1
解决办法
3320
查看次数

没有第二个操作数的三元运算符

这是一个两条腿的问题:一个用于C,一个用于C++.

关于以下ternary(?:)运算符的使用,C和C++标准有什么说法:

const char* opt = /* possible NULL pointer */;
const char* str = opt ?: "";
Run Code Online (Sandbox Code Playgroud)

什么时候合法?它是编译器扩展吗?对第一个操作数有什么要求(可以隐式转换为bool/ int)?

c c++ gcc operators conditional-operator

10
推荐指数
2
解决办法
1656
查看次数

具有无效类型的分支的三元运算符

使用返回void的函数的三元运算符是否安全?像这样的东西:

void foo1(){}
void foo2(){}

//////////////

bool to_use_1 = ....;
to_use_1 ? foo1() : foo2();
Run Code Online (Sandbox Code Playgroud)

编译器可以删除此代码吗?假设它会将这些函数视为纯函数,并执行删除这些调用的激励优化

c++ conditional-operator compiler-optimization

10
推荐指数
1
解决办法
1265
查看次数

?: 运算符在 C 中究竟是如何工作的?

我有一个问题,编译器如何对以下代码进行操作:

#include<stdio.h>

int main(void)
{
  int b=12, c=11;
  int d = (b == c++) ? (c+1) : (c-1);
  printf("d = %i\n", d);
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么结果是???d = 11.

c syntax increment conditional-operator post-increment

10
推荐指数
3
解决办法
422
查看次数

赋值时奇怪的 Java 三元行为。Java在幕后做了什么来实现这一点?

几天前,我遇到了一个有趣的场景,我找不到任何关于 Java 如何或为什么让以下发生的文档。(此代码段只是该错误的简化形式。)

    @Test
    public void test() {
      boolean bool = false;
      Integer intVal = Integer.valueOf(5);
      Long longVal = null;
      Long result = bool ? intVal : longVal;

      System.out.println(" > " + result);
   }
Run Code Online (Sandbox Code Playgroud)

在上面的片段中:

如果 bool = true,则您将获得值“5”;

但是如果 bool = false,那么在尝试评估三元运算时会得到一个空指针异常。不是打印语句。


为了解决这个问题,我只是将“结果”更改为

Long result = bool ? Long.valueOf(intVal) : longVal;
Run Code Online (Sandbox Code Playgroud)

这样做,将提供我需要的预期行为:

如果 bool = true,则您将获得值“5”;

但是如果 bool = false,那么你会得到 'null'


现在有趣的部分是,如果你把它拆分成一个普通的 if/else 语句,那么 java 不会让你编译

longVal = intVal; 
Run Code Online (Sandbox Code Playgroud)

但它没有通过三元运算符捕获它。那么 Java 做了什么来使它在原始代码段中成为空点?

(Java 11)

java nullpointerexception conditional-operator

10
推荐指数
1
解决办法
117
查看次数

try/catch 不适用于网络图像(例外:图像数据无效)

我已经获取网络图像并使用三元运算符,我可以在其中显示网络图像,但无法显示默认资产图像,其中网络图像在网格中默认图像无效,也如此-

\n

我是颤振新手

\n
 image: NetworkImage(products[index]\n                                              .productImageList[0]\n                                  )!= null\n                                      ? NetworkImage(\n                                      products[index].productImageList[0])\n                                      :Image.asset("assets/defimg.jpg"),\n                                  fit: BoxFit.fitHeight ),\n
Run Code Online (Sandbox Code Playgroud)\n

它在索引 0 上显示网络图像,但不会加载网络图像无效或为空的资产图像并抛出此错误 -

\n
\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 Exception caught by image resource service \xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\nThe following _Exception was thrown resolving an image codec:\nException: Invalid image data\n\nWhen the exception was thrown, this was the stack: \n#0      _futurize (dart:ui/painting.dart:5230:5)\n#1      ImageDescriptor.encoded (dart:ui/painting.dart:5098:12)\n#2      instantiateImageCodec (dart:ui/painting.dart:1998:60)\n<asynchronous suspension>\n
Run Code Online (Sandbox Code Playgroud)\n

之后我尝试了 try/catch -我的 try catch 代码是 --

\n
child: Builder(builder: (BuildContext context) {\n                              try {\n                                return Center(\n                                  child: Image.network(\n                                      products[index]\n …
Run Code Online (Sandbox Code Playgroud)

try-catch conditional-operator networkimageview flutter-dependencies flutter-layout

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

使用条件运算符来选择调用特定方法的对象?

我有两个集合,以及根据是否满足某些条件而添加到这些集合中的一个或另一个集合的项目.

有点无意中,我偶然发现写作是合法的

(test(foo) ? cOne : cTheOther).add(foo);
Run Code Online (Sandbox Code Playgroud)

代替

if (test(foo)) {
 cOne.add(foo);
} else {
 cTheOther.add(foo);
}
Run Code Online (Sandbox Code Playgroud)

虽然第一个让我觉得聪明(总是加分),但我不确定长期可读性,可维护性等.我看到的基本优势是,如果我知道我总是会做同样的事情,它成为改变方法的一个位置(而不是两个,或者如果我通过条件运算符实现switch语句,可能很多).主要的缺点发生在不是这种情况时(即,我需要为某些情况而不是其他情况添加方法调用).

您看到两种方法(或其他解决方案)的优缺点是什么?

如果你不认为使用条件运算符设置哪个对象来调用方法的特定实例是正确的选择,是否存在合理的情况?

java coding-style conditional-operator

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

C与C++中的三元运算符

C和C++之间存在很多差异,并且卡在其中一个上相同的代码在C中产生错误而在C++中执行正常请解释原因

int main(void)
{
   int a=10,b;
   a>=5?b=100:b=200;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在C中给出了一个错误,说明了所需的左值,而相同的代码在C++中编译得很好

c c++ ternary-operator conditional-operator

9
推荐指数
3
解决办法
903
查看次数

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

最近在一段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
查看次数