C语言 关于赋值错误的问题

如题所述

if((a<=b)&&((b-a+1)<=N)&&(((a+b)*(b-a+1))/2=M))
这句语句错了,我不知道你是不是想写成(((a+b)*(b-a+1))/2==M)(=变成==)
这个的错误是,等号前面是表达式,表达式的结果是一个临时变量,你把M赋值给一个临时变量,肯定错了。临时变量不能做左值
要不改成==,表示相等,如果就是赋值,把M写前面就可以了,把运算的值赋给M
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-18
注意看这里(((a+b)*(b-a+1))/2=M),正确的应该是(((a+b)*(b-a+1))/2==M)。如果只有一个=的话,这是一个赋值表达式,赋值表达式的左操作数怎么可能还是一个表达式呢?
第2个回答  2019-08-21
*运算符与&运算符刚好相反,它也是一远运算符.用语返回指针指向的内存地址中存的值&是一元运算,取变量地址的操作,间接访问操作用运算符号*.&他返回操作数的内存地址,可以赋给类型合适的指针./
列如int
x
int
*px
px=&x
将x的内存地址赋给指针变量px,该赋值语句表示
指针px制向变量x本回答被提问者采纳
相似回答