关于三目运算符。我正在使用更加简洁的三目运算符重写一个C语言中的if-else语句。
以下是代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[10];
int i;
// for ( i = 0; i < 10; i++ )
// {
// if ( i % 2 == 0 )
// {
// arr[i] = 0;
// }
//
// else arr[i] = 1;
// }
for ( i = 0; i < 10; i++ )
{
i % 2 == 0 ? arr[i] = 0 : arr[i] = 1;//Line in question
}
/* Just to check the result */
for ( i = 0; i < 10; i++ )
{
printf ( "%d ", arr[i] );
}
return 0;
}
注释掉的代码确实有效,但令我惊讶的是,当我使用三元运算符编译文件时,我得到了以下错误信息:
C:\Users...\main.c|21|error: lvalue required as left operand of assignment|
这是一个简单的代码来检查数组中的位置是奇数还是偶数。搜索了一下,我唯一找到与此代码相关的内容就是lvalue是一个变量。如果这是真的,我要提到一个例子,迄今为止我还没有得到答案。
printf ( "%d", 23 + 4 );
占位符将被字面值27替换。这里没有涉及任何变量,它可以正常工作。 谢谢。
if
/else
语句更加简洁。它只会使代码更难阅读(而且,正如你所看到的,语法上不正确)。 - Keith Thompsonif
/else
可以完成相同的事情时,使用三元运算符只会使代码更加晦涩。如果在表达式中使用它可以是有用的,如果这意味着同一表达式的其他部分不必重复。 - Keith Thompson