加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – i%2 == 0? arr [i] = 0:arr [i] = 1;三元运算符错误

发布时间:2020-12-16 10:35:39 所属栏目:百科 来源:网络整理
导读:关于三元运算符.我使用更干净的三元运算符重写了C中的if-else语句. 这是代码: #include stdio.h#include stdlib.hint main(){ int arr[10]; int i;// for ( i = 0; i 10; i++ )// {// if ( i % 2 == 0 )// {// arr[i] = 0;// }//// else arr[i] = 1;// } fo
关于三元运算符.我使用更干净的三元运算符重写了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替换.此处不涉及变量,它很难实现.
谢谢.

解决方法

更改:

i % 2 == 0 ? arr[i] = 0 : arr[i] = 1;

对此:

i % 2 == 0 ? (arr[i] = 0) : (arr[i] = 1);

条件运算符的优先级高于赋值运算符.

正如评论中所建议的那样,您可以获得相同的结果:

arr[i] = (i % 2 == 0 ? 0 : 1);

或者干脆:

arr[i] = i % 2;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读