有没有办法输入如果喜欢:
var = (cond) ? true : false;
Run Code Online (Sandbox Code Playgroud)
还是我们必须使用这种格式?
if (cond)
true
else
false
end
Run Code Online (Sandbox Code Playgroud) 您是否可以在PHP中使用三元运算符而不关闭'else'语句?我已经尝试过了,它会返回错误.谷歌搜索没有产生任何东西,所以我认为答案可能不是.我只是想在这里仔细检查一下.例如:
if ( isset($testing) {
$new_variable = $testing;
}
Run Code Online (Sandbox Code Playgroud)
如果存在$ testing,则仅设置$ new_variable.现在我能做到
$new_variable = (isset($testing) ? $testing : "");
Run Code Online (Sandbox Code Playgroud)
但如果未设置$ testing,则返回$ new_variable的空变量.如果没有设置,我不想要一个空变量,我希望不创建$ new_variable.
我试过了
$new_variable = (isset($testing) ? $testing);
Run Code Online (Sandbox Code Playgroud)
它返回了错误.我也试过了
$new_variable = (isset($testing) ? $testing : );
Run Code Online (Sandbox Code Playgroud)
它也返回了错误.有没有办法在没有附加其他声明的情况下使用三元运算符,或者我是不是刻意写出来?
编辑:按照Rizier123的建议,我尝试将等式的'else'部分设置为NULL,但它仍然最终将一个键附加到数组.价值不存在,但关键是,这会弄乱我的计划.请允许我进一步解释.
代码将从表单中获取一堆$ _POST变量,并将它们用于stdClass中的参数,然后将其用于API方法调用.一些表单变量将不存在,因为它们都应用于API调用的同一变量,但用户只能选择一个.例如,您可以选择3个项目,无论您选择哪个项目传递给stdClass,另外2个项目都不存在.
我试过这个:
$yes_this_test = "IDK";
$setforsure = "for sure";
$list = new stdClass;
$list->DefinitelySet = $setforsure;
$list->MaybeSet = (isset($yes_this_test) ? $yes_this_test : NULL);
$list->MaybeSet = (isset($testing) ? $testing : NULL);
print_r($list);
Run Code Online (Sandbox Code Playgroud)
但显然MaybeSet被设置为NULL,因为(isset($ testing)在(isset($ yes_this_test)之后)返回
stdClass Object ( [DefinitelySet] => for …Run Code Online (Sandbox Code Playgroud) 我有一个检查空值的方法.有没有办法减少方法中的行数?目前,代码看起来"脏":
private int similarityCount (String one, String two) {
if (one == null && two == null) {
return 1;
} else if (one == null && two != null) {
return 2;
} else if (one != null && two == null) {
return 3;
} else {
if(isMatch(one, two))
return 4;
return 5;
}
}
Run Code Online (Sandbox Code Playgroud) 在VBA中,我可以执行以下操作:
A = B + IIF(C>0, C, 0)
Run Code Online (Sandbox Code Playgroud)
所以,如果C> 0,我得到A=B+C,C <= 0,我得到A=B
是否有一个运算符或函数可以让我在MATLAB代码中内联这些条件?
这是一个简单的C++代码段:
int x1 = 10, x2=20, y1=132, y2=12, minx, miny, maxx, maxy;
x1<=x2 ? minx=x1,maxx=x2 : minx=x2,maxx=x1;
y1<=y2 ? miny=y1,maxy=y2 : miny=y2,maxy=y1;
cout<<"minx="<<minx<<"\n";
cout<<"maxx="<<maxx<<"\n";
cout<<"miny="<<miny<<"\n";
cout<<"maxy="<<maxy<<"\n";
Run Code Online (Sandbox Code Playgroud)
我认为结果应该是:
minx=10
maxx=20
miny=12
maxy=132
Run Code Online (Sandbox Code Playgroud)
但实际上结果是:
minx=10
maxx=10
miny=12
maxy=132
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么maxx不是20?谢谢.
c++ ternary-operator operator-precedence comma-operator c++11
下面的3行代码编译好了.(请注意,此代码是"人工Java编码"的示例,因此在专业编写的代码中不会出现.)
int x, y;
boolean b=true;
x = b ? y=1 : 2; // Compiles OK.
Run Code Online (Sandbox Code Playgroud)
如果我现在更改上面第3行中的代码,使其看起来像下面的代码行,编译器会生成错误.
// Change the position of the "y assignment", and now the code doesn't compile.
x = b ? 1 : y=2;
Run Code Online (Sandbox Code Playgroud)
这是语法错误消息:

有人可以解释这种行为(对新手Java学习者)吗?谢谢.
我正在尝试做类似以下的事情
<div id="test">
@(
string.IsNullOrEmpty(myString)
? @:
: myString
)
</div>
Run Code Online (Sandbox Code Playgroud)
上面的语法是无效的,我尝试了很多不同的东西,但无法让它工作.
我在Perl 5.8上,我需要指定一个默认值.我最终这样做了:
if ($model->test) {
$review = "1"
} else {
$review = ''
}
Run Code Online (Sandbox Code Playgroud)
值$model->test将是"1"或未定义.如果有某些内容$model->test,则将$review其"1"设置为等于''.
因为它不是Perl 5.10我不能使用新的时髦定义的或运算符.我的第一反应是使用这样的三元运算符......
defined($model->test) ? $review = "1" : $review = '';
Run Code Online (Sandbox Code Playgroud)
但那也不起作用.
有谁知道如何更有效地分配这个?珍妮
我的编译器是最新的VC++ 2013 RC.
int f(bool b)
{
return {}; // OK
return b ? 1 : { }; // C2059: syntax error : '{'
return b ? 1 : {0}; // C2059: syntax error : '{'
return b ? {1} : {0}; // C2059: syntax error : '{'
}
Run Code Online (Sandbox Code Playgroud)
为什么braced-init-list不能用于三元运算符?
这种行为是否被C++标准定义为不正确,或仅仅是VC++编译器的错误?
这是一个例子
#include <iostream>
using namespace std;
int main()
{
int x = 0;
cout << (x == 0 ? x++ : x) << endl; //operator in branch
cout << "x=" << x << endl;
cout << (x == 1 || --x == 0 ? 1 : 2) << endl; //operator in condition
cout << "x=" << x << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
0
x=1
1
x=1
Run Code Online (Sandbox Code Playgroud)
我理解输出,但这是不确定的行为?在任何一种情况下,评估顺序是否得到保证?
即使有保证,我也非常清楚使用递增/递减会很快成为可读性的问题.我只是问我看到类似的代码并且立即不确定,因为有很多关于递增/递减运算符的模糊/未定义使用的示例,例如......
C++没有定义评估函数参数的顺序.↪
int nValue = Add(x, ++x);
Run Code Online (Sandbox Code Playgroud)C++语言表示你不能在序列点之间多次修改变量.↪
x …Run Code Online (Sandbox Code Playgroud)