C语言语法问题,左运算元必须为左值是什么意思啊 我该怎么改啊?

fjmyhfvclm2025-03-06  20

才慕悦臧优的回答:


左值就是赋值号「=」左边的表示式。左值必须是乙个位址空间,而且是可以改变内容的位址空间。a+b表示的位址不确定。

同样也有右值表达。通常所说的a=8,其实是将常量放到a对应的位址空间。a就是是拍丛栈上记忆体空间所对应的32为地返粗址的乙个别名。

所以a+b把两个位址空间相加不能做为乙个确切的位址空漏贺镇间,不可以做为左值。a+b可以作为右值,即将a和b中的内容值相加。

仍安吉汤文的回答:


就是左边的数必须是变戚粗做量,只能是乙个。

比如b+c=9中,左边不能有两个凳虚变数,这样时错误的高衡。满意。

信必鑫服务平台的回答:


所谓左值是指乙个能用于赋值运算左边的表示式。左值必须能够被修改,不能是常量。我们用变数作左值,还可以看到,指标和引用也可以作左值。改成b=9-c。

一般形式为:变数=表示式。它的作用是将乙个表示式的值赋给乙个左值。

计算赋值运算子右侧表示式的值(「=为赋值运算子),将赋值运算子右侧表示式的值赋给左侧的变数,将赋值运算子左侧的变数的值作为表示式的值。

例如:int a, b, c;

a=3;b=4;

c = a + b )*2*a - b) /得出14

miss黎的的回答:


就是说表示式左边只能有乙个变数。

现在明显你左边有a,b两个变数了。

你可以再命名乙个变数m=9

然后把a+b=9改为m=a+b

️c语言中什么是左运算元和右运算元?

网友的回答:


说明这个问题,需要先了解一下运算子的分类。

运算所需变数为乙个的运算子叫单目运算子,例如【!,运算所需变数为两个的运算子叫做双目运算子,绝大多数的运算子都是双目运算子,如算术运算子,关係运算子,赋值运算子,逻辑运算子等等。

算所需变数为三个的运算子叫三目运算子:【?在双目运算中,存在左右运算元,如:

int a ;

a=10 ; //这里的赋值运算,处于=左边的就叫」左运算元「,这里是a 处于=右边的就叫」右运算元「,这里是10

幉枫的回答:


满意答案 热心问友 2009-08-24c语言不分这个吧。。。只有彙编才分这个。。。c语言的a=0a=a+2彙编表示就是 mov ax,0add ax,2很容易看出彙编一般指令都有两个运算元的:

左运算元和右运算元,彙编术语就是目的运算元与源运算元 追问: 那么说就是目的运算元是左运算元,源运算元是右运算元吗? 回答:

你看得懂我写的c语言例子没有:int a = 0; /* a赋值为0,让使用a和使用0一样"好玩" */a = a + 1; /* 让a加1,然后把值给a,执行了这条指令a就等于1了 */;;;mov ax,0;;;说明--解释;mov 目的运算元,源运算元功能:把源运算元赋值给目的运算元;add 目的运算元,源运算元功能:

把源运算元的值加上目的运算元的值结果放到目的运算元;明白没有。。。你为什么对这个这么感兴趣呀! 追问:

我自学都学了彙编和c了,你是在学校学的吧,努力呀。

️c++中提到的左值是什么意思

网友的回答:


3全部在c语言中,左值(left value),指在赋值表示式(assignment expression)中作为将要赋予值的位址的表示式。

例如在赋值语句。

i = 10;

中i就是乙个左值,它必须是乙个变数,或是乙个解引用的指标(如下)int *p;

p = 10;

在c的yacc语法中,赋值表示式被这样定义assignment_expression: conditional_expression| unary_expression assignment_operator assignment_expression

也就是说,在纯语法的层面,左值必须是一元表示式。

网友的回答:


首先左值和右值是表示式。左值是可以放在赋值符号=左边,逻辑上表示乙个位置,可以赋予值。而右值是可以放在赋值符号右面,逻辑上表示乙个值,因为不是个位置,那么不能被赋值。

所以左值一定是右值,右值不一定是左值。

与子如初见的回答:


左值就是运算子左边的表示式的值。

网友的回答:


可以放在赋值运算子的左边的,可被赋值的。

️c语言中什么情况下是从右向左运算的?

惠企百科的回答:


c语言的入参是从右到左的,因此引数入栈的时候,是后进先出。这样第乙个引数才能第乙个出行胡老来,档公升所以c语言支援可变数量引数,能够从左到右的顺序读取引数。

在c语言标準中好像并没有看到有关表述。引数入栈的方式应该是作业系统所实现,由gcc等编译器转换成机器语言。

作为一门跨平台的程式语言,一般都是很抽象的,儘量与底层脱钩。比如在c语言标準的文件,对位元组,位元等的定义都是很抽象的,只是资料型别,与底层无关。

左移就是把乙个数的所有位都向左移动若干位,在c中用《运算子。

例如:int i = 1;

i = i <<2; /把i里的值左移2位。

️c语言,关于左值,右值的概念问题

网友的回答:


1、例如:a[3] = 5;*p = 55;

2、非常量的变数空间可以写入,自然就是左值了3、右值指的是常量或者比如算术运算的中间结果,只能读出,不能写入,当然就是右值了。

一般而言,左值是可以作为右值的,左值的本意是只写,右值的本意是只读。

️关于c++中,左值和右值问题

网友的回答:


++ 他们具有相同的优先顺序。

所以 --x-- x两边的-- 就有相同的优先顺序,无法判断 先执行那边。

而5*x++;的 乘法 和 --优先顺序不一样,有先后。

1级优先顺序 左结合。

圆括号 下标运算子 ->指向结构体成员运算子 . 结构体成员运算子。

2级优先顺序 右结合。

逻辑非运算子 ~ 按位取反运算子 ++自增运算子 --自减运算子 - 负号运算子 (型别) 型别转换运算子 * 指标运算子 & 位址与运算子 sizeof 长度运算子。

3级优先顺序 左结合。

乘法运算子 / 除法运算子 % 取余运算子。

4级优先顺序 左结合。

加法运算子 - 减法运算子。

5级优先顺序 左结合。

左移运算子 >>右移运算子。

6级优先顺序 左结合。

<=、>、= 关係运算子。

7级优先顺序 左结合。

等于运算子 != 不等于运算子。

8级优先顺序 左结合。

按位与运算子。

9级优先顺序 左结合。

按位异或运算子。

10级优先顺序 左结合。

按位或运算子。

11级优先顺序 左结合。

逻辑与运算子。

12级优先顺序 左结合。

逻辑或运算子。

13级优先顺序 右结合。

条件运算子。

14级优先顺序 右结合。

=- =* =/ =% = >= < = &= ^= |= 全为赋值运算子。

15级优先顺序 左结合。

逗号运算子。

网友的回答:


你可以试试这样两条语句:

x++;//该语句报错是内容是'--' needs l-value

x--;//该语句报错是内容是'++' needs l-value

你会发现编译器报错说的都是前面的那个运算子报错,前面那个运算子需要乙个左值。

x++和x--都是在执行该条语句之后才改变值的。也就是说在该条语句执行完之前x++和x--都是乙个右值。

所以当对乙个右值前加或者前减的时候自然会报错。。。

网友的回答:


你说的是什么意思啊,是不是把x++换成--x--啊,是的话就是歧义错误,要用()来作用处理的。

琼头浪子的回答:


(--x)--等价于(x-1)--等价于(x-1)=(x-1)-1;这显然是不行的,因为等号的左边必须是变数,而不能是表示式。

网友的回答:


--是左结合的,所以--x--等价于--(x--)

x--返回x的拷贝,然后x自减1。

返回的拷贝属于右值,是不能改变的,所以错了。

而第乙个表示式正式把它当右值,所以没错。

另外,根据优先顺序,第乙个表示式相当于y=5*(x++)

没有啥意思,就是简单的运算。这里涉及如下运算子,赋值 自增 括号,和逗号运算子。按照运算子的优先顺序,先计算括号 也就是讨论 c b 然后计算 也就是c和b分别自加。注意 然后谈论逗号运算子,没有意义,就是从左到右。所以最后赋值给a的是b 前面提到一个注意就是,虽然b自加了,但是他的写法是 b 而不...

宣告一个变数或者函式只是将变数名或者函式名识别符号的有关资讯告诉编译器,使编译器 认识 该识别符号,而并一定分配记忆体。在c语言中星号 一般有两种意义,一种是和指标相关,用于宣告或者作为指标的间接运算子,一种是算术运算子,表示乘法。int main 我理解的 在宣告中用来宣告其后跟的变数是一个指标变...

照你那样说的插入是不太可能的,从底层看,档案一般都是通过重写插入删除资料的。如果你要插入的话,就是把插入点之后的资料全都複製下来,然后写上要插入的东西,然后再把複製的资料全部粘上。删除也是一样,把你要删除的资料用后面的资料覆盖上。无论什么编辑器都是以这样的原理实现的。可能它们用了这样或那样的演算法优...

转载请注明原文地址:https://www.aspcms.cn/baike/1678876.html
00

热门资讯