我是靠谱客的博主 怕孤单路人,这篇文章主要介绍error: lvalue required as left operand of assignment,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h> int main(){ float a[5]; float e; int lo, hi, mi; int i; lo = 0; hi = 5; printf("please input e:"); scanf("%f", &e); printf("please input array:"); for(i = 0; i < 5; i++) scanf("%f",&a[i]); while(lo < hi){ mi = (lo + hi)>>1; e < a[mi] ? hi = mi : lo = mi + 1; //这句报错; } printf("find the number: %f",a[--lo]); }


错误信息:error: lvalue required as left operand of assignment,看字面意思是:赋值操作的左操作数必须使用左值。

于是我想应该就是条件表达式的优先级顺序导致的,于是就改为:

复制代码
1
 (e < a[mi]) ? (hi = mi) : (lo = mi +1);

程序完美运行,这也就提示我们要经常加括号啊。我查了下资料,条件运算符的优先级比赋值运算符的优先级高,所以通常条件运算符的用法如下:

复制代码
1
 x = y < 0 ? -y : y; //求一个数的绝对值;


附:

1、上面的例子的使用的编译器是codeblocks,报错。但是同样是不加括号,在c-free下是可以运行的,编译器之间还是有少许的区别的。

2、在线编译器有时候还真的挺好用,比如说像今天这种情况,可以测试程序的正确性啊。虽然缺点是速度慢点儿,还不能保存。

3、在线编译器:菜鸟教程在线编译器、ideone、dooccn,特别是dooccn,界面炫酷友好,操作还比较方便。

最后

以上就是怕孤单路人最近收集整理的关于error: lvalue required as left operand of assignment的全部内容,更多相关error:内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部