我不知道问号(?)在java中代表什么,我正在做一个小程序,一个Nim游戏.正在寻找一本书,寻求帮助并看到这句话:
int pinsToTake = (min >= 2) ? 2 : 1;
Run Code Online (Sandbox Code Playgroud)
我不明白,它?代表什么,它可以与if语句有关,但你把它放在变量中?而且:可以是"其他"的东西?(我刚才所说的这些事情可能会产生误导)
在阅读Coffeescript文档时,我对存在运算符的文档很少感到困惑.文件说明
对于您可能正在处理数字或字符串的情况,It(
?=)也可用于比||=提供更安全的条件分配.
?=和||=运营商之间有什么区别?何时应该使用哪一个?
这是一个两条腿的问题:一个用于C,一个用于C++.
关于以下ternary(?:)运算符的使用,C和C++标准有什么说法:
const char* opt = /* possible NULL pointer */;
const char* str = opt ?: "";
Run Code Online (Sandbox Code Playgroud)
什么时候合法?它是编译器扩展吗?对第一个操作数有什么要求(可以隐式转换为bool/ int)?
使用返回void的函数的三元运算符是否安全?像这样的东西:
void foo1(){}
void foo2(){}
//////////////
bool to_use_1 = ....;
to_use_1 ? foo1() : foo2();
Run Code Online (Sandbox Code Playgroud)
编译器可以删除此代码吗?假设它会将这些函数视为纯函数,并执行删除这些调用的激励优化
我有一个问题,编译器如何对以下代码进行操作:
#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.
几天前,我遇到了一个有趣的场景,我找不到任何关于 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)
我已经获取网络图像并使用三元运算符,我可以在其中显示网络图像,但无法显示默认资产图像,其中网络图像在网格中默认图像无效,也如此-
\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 ),\nRun 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>\nRun Code Online (Sandbox Code Playgroud)\n之后我尝试了 try/catch -我的 try catch 代码是 --
\nchild: 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
我有两个集合,以及根据是否满足某些条件而添加到这些集合中的一个或另一个集合的项目.
有点无意中,我偶然发现写作是合法的
(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语句,可能很多).主要的缺点发生在不是这种情况时(即,我需要为某些情况而不是其他情况添加方法调用).
您看到两种方法(或其他解决方案)的优缺点是什么?
如果你不认为使用条件运算符设置哪个对象来调用方法的特定实例是正确的选择,是否存在合理的情况?
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++中编译得很好
最近在一段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 == null并3返回,但似乎不需要什么,2永远不会返回。
这个语句是什么意思(即我应该如何将它读作true/false条件的单词语句)以及需要2返回的输入是什么?