在不使用if / else /?的情况下编写条件语句

时间:2019-11-23 12:38:07

标签: c if-statement conditional-statements c99

我希望编写不使用C语言的(if/else/?/while etc...)的条件代码。

例如以下代码:

if (Num>6) printf("T");

可以转换为(并且仍然执行相同的任务):

Num>6 && printf("T")

但以下内容:

bool larger;
if (Num>6) larger=true;

不能替换为:

bool larger;
Num>6 && larger=true;

因为必须将左值作为赋值的左操作数

有帮助吗? (我认为&&操作和bool的使用会有所帮助)

1 个答案:

答案 0 :(得分:2)

在以下加上括号:

bool larger;
Num > 6 && (larger = true);

为什么?因为=&&>具有lower precedence。这意味着表达式被解析为

((Num > 6) && larger) = true;

这是无效的作业

Demo on compiler explorer