#include<stdio.h> void main() { int x=1,y; y=++x*++x; printf("%d\n",y); }

这中的 y=++x*++x; 怎么计算

谭浩强 C语言程序设计
C语言的运算符可分为以下几类:
1. 算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、
自增(++)、自减(--)共七种。
2. 关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3. 逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4. 位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、
异或(^)、左移(<<)、右移(>>)六种。
5. 赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位
运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6. 条件运算符:这是一个三目运算符,用于条件求值(?:)。
7. 逗号运算符:用于把若干表达式组合成一个表达式(,)。
8. 指针运算符:用于取内容(*)和取地址(&)二种运算。
9. 求字节数运算符:用于计算数据类型所占的字节数(sizeof)。
10. 特殊运算符:有括号(),下标[],成员(→,.)等几种。C语言的运算符可分为以下几类:
1. 算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、
自增(++)、自减(--)共七种。
2. 关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等

运算符的优先级:C语言中,运算符的运算优先级共分为 15 级。1 级最高,15 级最低。
在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符
优先级相同时,则按运算符的结合性所规定的结合方向处理。

自增、自减运算符
自增1,自减1运算符:自增 1 运算符记为“++”,其功能是使变量的值自增 1。
自减 1 运算符记为“--”,其功能是使变量值自减 1。
自增 1,自减 1 运算符均为单目运算,都具有右结合性。可有以下几种形式:
++i i 自增 1 后再参与其它运算。
--i i 自减1 后再参与其它运算。
i++ i 参与运算后,i的值再自增 1。
i-- i 参与运算后,i 的值再自减 1。

解答问题:
x=1为初始化值.
y=++x * ++x;
第一个++x, x=2;
第二个++x, x=3; 同样道理 第一个++x 也=3; 因为x的内存地址不变.第二个++x加了1后=3.第一个++x也会改变自身的值.所以:结果=9
在visual C++6.0编译后结果=9
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-16
应该是9 首先++x x此时是2 然后再++x 此时x是3 然后x*x 赋值给y y就是9了 、如果是y=(x++)*(x++) 楼主想想x是多少 y是多少
第2个回答  2011-09-16
++的优先级高于*,故先执行++,x自加了两次,故等于3,不管他有几个++x,x的值都等于最后的那个++后的结果
第3个回答  2011-09-16
等于6,编程环境不同
第4个回答  2019-07-24
谭浩强
C语言程序设计
C语言的运算符可分为以下几类:
1.
算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、
自增(++)、自减(--)共七种。
2.
关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、
大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3.
逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4.
位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、
位异或(^)、左移(<<)、右移(>>)六种。
5.
赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位
运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6.
条件运算符:这是一个三目运算符,用于条件求值(?:)。
7.
逗号运算符:用于把若干表达式组合成一个表达式(,)。
8.
指针运算符:用于取内容(*)和取地址(&)二种运算。
9.
求字节数运算符:用于计算数据类型所占的字节数(sizeof)。
10.
特殊运算符:有括号(),下标[],成员(→,.)等几种。C语言的运算符可分为以下几类:
1.
算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、
自增(++)、自减(--)共七种。
2.
关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、
大于等于(>=)、小于等
运算符的优先级:C语言中,运算符的运算优先级共分为
15
级。1
级最高,15
级最低。
在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符
优先级相同时,则按运算符的结合性所规定的结合方向处理。
自增、自减运算符
自增1,自减1运算符:自增
1
运算符记为“++”,其功能是使变量的值自增
1。
自减
1
运算符记为“--”,其功能是使变量值自减
1。
自增
1,自减
1
运算符均为单目运算,都具有右结合性。可有以下几种形式:
++i
i
自增
1
后再参与其它运算。
--i
i
自减1
后再参与其它运算。
i++
i
参与运算后,i的值再自增
1。
i--
i
参与运算后,i
的值再自减
1。
解答问题:
x=1为初始化值.
y=++x
*
++x;
第一个++x,
x=2;
第二个++x,
x=3;
同样道理
第一个++x
也=3;
因为x的内存地址不变.第二个++x加了1后=3.第一个++x也会改变自身的值.所以:结果=9
在visual
C++6.0编译后结果=9

#include<stdio.h> void main() { int x=1,y; y=++x*++x; printf("%d...
第二个++x, x=3; 同样道理 第一个++x 也=3; 因为x的内存地址不变.第二个++x加了1后=3.第一个++x也会改变自身的值.所以:结果=9 在visual C++6.0编译后结果=9

...main() { int x=1,y; y=++x*++x; printf("x=%d,y=%d",x,y); retu...
2, 编译器通常把同一变量放于某一通用寄存器,再把运算结果放于另一寄存器, 在这里显然是x再做了两次自增后放于一个寄存器,然后对其取平方的。

#include<stdio.h> int main() { int x=1,y; y=(++x)*(++x); printf...
这个问题在不同的编译系统下,结果可能不同。在VC下,x=3,y=9。

C语言float x=1,y;则:y=++x*++x的结果是?最好有过程?谢谢
所以,应该先算2次++x,这时x = 3;然后,再算乘法,因为这时x的值已经是3了所以y = 3 * 3 = 9;

C语言中 int x=1,y;y=++x*++x怎么算
++x返回的是x自身的值,所以:y = ++x * ++x;先计算左边的++x,再计算右边的++x,结果x为3;y = 3 * 3 = 9;不排除编译器造成的一些困扰。

#include <stdio.h> void main( ) { int x,y,z; x=y=1; z=x++,y++...
开始的时候x=1 y=1 然后z=x,x进行自加1,也就是此时的x=2 再过来y自加1,即y=2 最后把x、y的结果以十进制的形式打印出来,即 2,2

c语言#include <stdio.h> main() { int x=010, y=10; printf("%d,%d\\...
二)已知 x 的值为 2, y 的值为0 则 y=x++; 的意思是 先 y=x; (此后x的值为2,y的值为2)后 x=x+1; (此后x的值为3,y的值为2)--x 与 x-- 也是一样的道理 010是八进制数,它的十进制数是8 x的值为8,所以输出 ++x 的值为9 ...

c语言问题求解释, 已知:int x=1,y;则y=++x*++x的结果为什么?
现在你只有一个x变量(这个关键,就一个。),而这个题中出现了两次++x,第一次x变成了2,第二次x变成了3,自然x的目前值就是3喽,那么3x3自然就得9了。

#include <stdio.h> void main() { int x,y; for (x=1,y=1;x+y<=1...
\/*你判断的是*\/(x%10==0)\/*但你输出的是*\/x+y \/*应该改成*\/((x+y)%10==0)

c语言题void main() {float x=1; int y; x++; y=x+1; printf("x=%d,y...
x++之后x就变成2了,因此y=x+1=3了 printf("x=%d,y=%f,x,y");因该是printf("x=%d,y=%f",x,y);这样吧 VC中不支持夸类型输出!如果实在要这样输出的必须做类型转换 例如 printf("x=%d,y=%f",int(x),float(y));否则没有意义 输出都是0或者0.000000(7位有效数字)...

相似回答