C语言(a=3*5)=4*3是什么意思 ?

2024-12-04 02:08:44
推荐回答(5个)
回答1:

在C语言中这是错误的,根本无法通过编译。
因为在C语言中赋值表达式的值不是左值(An assignment expression has the value of the left operand after the assignment,111) but is not an lvalue. )
因此(a=3*5)不可以被赋值
谭浩强的书是错误的

但是在C++中
赋值表达式的值是左值
所以(a=3*5)=4*3可以通过编译

那些以为在C语言中也可以这样写的人,
其实是对C语言和C++语言的根本区别一无所知,
误把编译C++代码当成了编译C代码
这个问题在《品悟C》的第一章第一节“C啊,有多少C++代码假汝之名而行”中有详细的说明和讨论

回答2:

a=3*5这个表达式的值为1,a=15,
1=4*3;肯定报错,常量不能为左值

回答3:

没有错误啊,可能你的编译器出错了。
它和 a = 4 * 3 ; 表达的意义相同。

回答4:

这个 应该是12吧。。之前的 3*5被之后的4*3覆盖。。

回答5:

回下989627的同学这个代码是对的 答案为12!!!
你所说的表达式的值为1是当(a==3.*5)=4.*3时的!!这样是错的