标签: conditional-operator

如何使用三元运算符执行此 IF

如何使用三元运算符执行此 IF 操作?

if (img != null) {
  return img;
} else if (!user) {
  return 'img.svg';
} else if (user) {
  if (user.img && !camera) {
    return `imgServer`;
  } else if (!user.img && !camera) {
    return 'img.svg';
  } else if (user.img && camera) {
    return camera;
  } else if (!user.img && camera) {
    return camera;
  }
} 
Run Code Online (Sandbox Code Playgroud)

我已经尝试过多种方法,但没有一种对我有用。

javascript if-statement conditional-operator conditional-statements

0
推荐指数
1
解决办法
111
查看次数

基于三元运算符 (?:) 的赋值避免了 C 中的类型检查

我无法理解为什么编译器在分配不兼容的指针时不发出警告(?:),但在直接分配时发出警告。

\n

在这种情况下编译器会发出警告:

\n
\n

test.c:在函数 \xe2\x80\x98main\xe2\x80\x99 中:test.c:8:4:警告:分配给\n\xe2\x80\x98uint32_t *\xe2\x80\x99 {aka \xe2 \x80\x98unsigned int *\xe2\x80\x99} 来自不兼容的指针类型\n\xe2\x80\x98uint32_t **\xe2\x80\x99 {aka \xe2\x80\x98unsigned int **\xe2\x80\x99 } [-Win兼容指针类型]\n8 | a = 数组;\n| ^

\n
\n
#include <stdint.h>\n#include <stdlib.h>\n\nint main(void)\n{\n    uint32_t *array[10], *a;\n    a = array;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

以下情况不会发出警告:

\n
#include <stdint.h>\n#include <stdlib.h>\n\nint main(void)\n{\n    int b = 8;\n    uint32_t *array[10], *a;\n\n    a = (b >= 8) ? array : malloc(8);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

环境:

\n
Gcc version 9.3.0\nUbuntu 20.04\ncompilation cmd: gcc test.c -o test.out\n
Run Code Online (Sandbox Code Playgroud)\n

c gcc conditional-operator void-pointers implicit-conversion

0
推荐指数
2
解决办法
237
查看次数

三元内部的 JSX 未返回所需的结果

问题:

如果三元为真,我尝试返回图标和文本,如果三元为假,则仅返回文本。这是我的代码:

{quote.is_archived ? <PencilFill className="mr-10" size={ 10 }/>  + 'View' : 'Edit'}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,这就是我得到的,有人能指出我为什么会发生这种情况吗?

在此输入图像描述

javascript conditional-operator reactjs

0
推荐指数
1
解决办法
41
查看次数

React三元运算符如何调用2个函数?

我如何在三元运算符中调用两个函数?\n我尝试通过添加 && 但随后它只调用第一个函数并忽略第二个函数。

\n
e.g.\nsetState(date) && dispatch(paypal_error({ time: date }))\n
Run Code Online (Sandbox Code Playgroud)\n

这是完整的代码

\n
const handleDateChange = (date) => {\n    setDisablePing(true);\n    const minutes = parseInt(dayjs(date).format('HH') * 60) +\n      parseInt(dayjs(date).format('m'))\n\n     if(minutes > pauseStartMin && minutes < pauseEndMin){\nsetState(\n          new Date(0, 0, 0, pauseEndHour, pauseEndMinute + deliveryTime)\n        ),\n        dispatch(\n          paypal_error({\n            time: new Date(\n              0,\n              0,\n              0,\n              pauseEndHour,\n              pauseEndMinute + deliveryTime\n            ),\n          }),\n        \n        toast.error(\n          `Zurzeit Pause. Bestellungen ab ${dayjs(\n            newPauseEndHour.toString(),\n            'H'\n          ).format('HH')}:${dayjs((newPauseEndMin + 1).toString(), 'm').format(\n            'mm'\n          )} Uhr wieder m\xc3\xb6glich`,\n          {\n            position: toast.POSITION.BOTTOM_RIGHT,\n          }\n …
Run Code Online (Sandbox Code Playgroud)

javascript conditional-operator reactjs

0
推荐指数
1
解决办法
296
查看次数

为什么sizeof(a?true:false,a)运算符打印一个字节?

根据这个问题,sizeof(true)或者sizeof(false)4字节,因为truefalse是宏并在#include <stdbool.h>头文件中定义.

但是,这里有趣的程序输出.

#include <stdio.h>
#include <stdbool.h>

int main() 
{
    bool a = true;
    printf("%zu\n", sizeof(a ? true : false, a));
                             /* ^^ -> expresion2 */
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出(现场演示):

1
Run Code Online (Sandbox Code Playgroud)

C11 6.5.15条件运算符(P4):

第一个操作数被评估; 在其评估与第二或第三操作数的评估之间存在一个序列点(以评估者为准).仅当第一个操作数不等于0时才评估第二个操作数; 仅当第一个操作数比较等于0时才评估第三个操作数; 结果是第二个或第三个操作数的值(无论哪个被评估),转换为下面描述的类型.110)

这里a是一个bool类型和赋值true,然后在sizeof运算符内,运算conditional符执行expression2因为a是a true.

因此,comma运算符部分(表达式3)未根据标准进行评估,而表达式2是宏.所以,根据那个问题,宏的输出是4字节,但在这里,程序的输出是1字节.

那么,为什么 只sizeof(a ? …

c boolean sizeof comma conditional-operator

-1
推荐指数
2
解决办法
157
查看次数

如何在 Javascript 中为三元运算符返回 true 或 false?

我正在尝试将下面的代码转换为带有三元运算符的速记版本

     if (sum % 10 === 0) {
        return true;
     } else {
        return false;
      }
Run Code Online (Sandbox Code Playgroud)

它按原样工作正常,但是当我将其更改为

sum % 10 === 0 ? return true : return false; 
Run Code Online (Sandbox Code Playgroud)

我收到语法错误,当我将其更改为

sum % 10 === 0 ? true : false; 
Run Code Online (Sandbox Code Playgroud)

它没有按预期工作。

如果有人能启发我了解发生了什么,我将不胜感激。

javascript return conditional-operator

-1
推荐指数
1
解决办法
1014
查看次数

在 C# 中使用三元运算符

编写这行代码时出现错误。我想检查该值是否等于并大于0然后获取该值,否则获取空白或空值。

double h = model.WorkHours.Value>=0 ? model.WorkHours.Value:"";
Run Code Online (Sandbox Code Playgroud)

c# conditional-operator

-1
推荐指数
1
解决办法
107
查看次数

使用默认第一个值的短路分配

我想要的是类似以下内容:

let x=32
let y=x===32 ?: 7;
Run Code Online (Sandbox Code Playgroud)

我现实生活中的例子更像是这样的:

inlineFunction(parameterWithLongNameIAmTesting===20000?parameterWithLongNameIAmTesting:anotherLongNameVariable);
Run Code Online (Sandbox Code Playgroud)

基本上使三元短路。我想y等于x当且仅当x=== 32。在上面的情况下,分配给的值y将是 32。但是,如果我分配x给等于 50 或其他任何值,则将y等于 7。

javascript 中有内置的方法可以做到这一点吗?

javascript variable-assignment conditional-operator

-1
推荐指数
1
解决办法
113
查看次数

如何在 C# 中检查数字是否可以被另一个数字整除而无需条件检查(if、三元等)

我有一个数字,例如 X。我想检查它是否可以被 Y(另一个数字)整除。如果能被Y整除,我需要返回1,否则返回0。但是我不允许使用if条件、三元运算符、等于等。有什么建议吗?

c# if-statement division conditional-operator

-1
推荐指数
1
解决办法
900
查看次数

如何使用 ?C中的for循环中的问号?

如果i是偶数,for(int j = 0; j < m; j++)

否则如果i是奇数,for(int j = m-1; j > 0; j--)

我想将这两个条件结合起来如下。

for( (i%2==0) ? (int j = 0; j < m; j++) : (int j = m-1; j > 0; j--))
Run Code Online (Sandbox Code Playgroud)

但似乎失败了。

?有没有办法使用C 语言或其他方式组合这两个条件?

c for-loop conditional-operator

-1
推荐指数
1
解决办法
155
查看次数