++x,y=x--为什么不合法?

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:33:22
变量x和y都已正确定义并赋值,
1.++x,y=x--
2.x=x+10=x+y
3.double(x)/10

以上三个为什么不合法?

这是C/C++语言区,所以说对应的语句还是应该说明到底是C下面的还是C++下面的

还有一些具体问题,比如x和y的类型是什么,是什么样子的声明,是不是常量等等

1、不像有问题,因为逗号表达式本身就是从左到右计算,而++x并不奇怪,按照c++03手册++x在对于非bool类型的时候是等价于x+=1的,而y=x--也看不出有问题
2、x+10是表达式,返回的是rvalue,自然不能对其赋值
3、double是关键字,但是在C++中是支持这种构造函数样子的转换方法的,但是C不支持

int x=0;
int y=0;

1) ++x,y=x++
这个在我的tc没有任何问题,不同的编译器会有不同的规则,具体要看使用的编译器

2)x=x+10=x+y
计算步骤是这样的:
x+10=x+y;这里是错误的,不能给x+10赋值
x=x+10;

3)double(x)/10
()一般用于函数调用,运算优先级,强制类型转换等
C中double是关键字,不是函数,所以不能用double(x)

运算优先级:
((a+b)*c-d)/e

函数调用:
int max(int x, int y)
{
return (x>y)?x:y;
}

int m=1;
int n=4;
max(m,n);

强制类型转换:
(目标类型)(表达式)
(double)(x/10)

y=x-- ,这个明显是错的
.x=x+10=x+y --已经把x+y的值付给10,这样是错的!变量的值怎么能付给常量啊
double(x)/10 ==double(x/10)

第一个没看出来,不过第二个不可以给常量10付值的,也就是10面不能加付值号和表达式;第三个double应该加括号x就没必要了。