我是靠谱客的博主 怕孤单路人,最近开发中收集的这篇文章主要介绍error: lvalue required as left operand of assignment,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
#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,看字面意思是:赋值操作的左操作数必须使用左值。
于是我想应该就是条件表达式的优先级顺序导致的,于是就改为:
(e < a[mi]) ? (hi = mi) : (lo = mi +1);
程序完美运行,这也就提示我们要经常加括号啊。我查了下资料,条件运算符的优先级比赋值运算符的优先级高,所以通常条件运算符的用法如下:
x = y < 0 ? -y : y; //求一个数的绝对值;
附:
1、上面的例子的使用的编译器是codeblocks,报错。但是同样是不加括号,在c-free下是可以运行的,编译器之间还是有少许的区别的。
2、在线编译器有时候还真的挺好用,比如说像今天这种情况,可以测试程序的正确性啊。虽然缺点是速度慢点儿,还不能保存。
3、在线编译器:菜鸟教程在线编译器、ideone、dooccn,特别是dooccn,界面炫酷友好,操作还比较方便。
最后
以上就是怕孤单路人为你收集整理的error: lvalue required as left operand of assignment的全部内容,希望文章能够帮你解决error: lvalue required as left operand of assignment所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复