y=--y*--y
答案:3 悬赏:20
解决时间 2021-03-15 15:38
- 提问者网友:那叫心脏的地方装的都是你
- 2021-03-14 20:19
y=--y*--y
最佳答案
- 二级知识专家网友:猎心人
- 2021-03-14 21:01
先算第一个自减,y变24, 再算第二个自减 y变23.
然后算 y * y , 23*23=529, 赋值给 y. 答案是529.
如果你把计算改成:
int y=25;
int t;
t = --y;
y = t * t;
printf("%d \n",y);
那么答案是 24*24=576
y=--y*--y是先算哪个,不同的编译器处理不同,编译时,“优化”方法不同结果也不同。所以程序员应当自己写明确--到底要自减几次。
例如:
y=25
y = (--y)+(--y)+(--y);
VC++ 编译器 /O1 优化,结果 得 66
VC++ 编译器 不优化,结果 得 68
然后算 y * y , 23*23=529, 赋值给 y. 答案是529.
如果你把计算改成:
int y=25;
int t;
t = --y;
y = t * t;
printf("%d \n",y);
那么答案是 24*24=576
y=--y*--y是先算哪个,不同的编译器处理不同,编译时,“优化”方法不同结果也不同。所以程序员应当自己写明确--到底要自减几次。
例如:
y=25
y = (--y)+(--y)+(--y);
VC++ 编译器 /O1 优化,结果 得 66
VC++ 编译器 不优化,结果 得 68
全部回答
- 1楼网友:独行浪子会拥风
- 2021-03-14 21:38
先算--再算*,--两次后变为23,再乘。
其实这是不一定的,主要看你使用的编译器,当然大多数编译器都遵循相同的C标准。
以后你学习了《编译原理》就明白了,语法分析有很多种。
其实这是不一定的,主要看你使用的编译器,当然大多数编译器都遵循相同的C标准。
以后你学习了《编译原理》就明白了,语法分析有很多种。
- 2楼网友:孤独入客枕
- 2021-03-14 21:25
你要搞清楚运算符的优先级,左边--y表示y=y-1;y=24;右边的--y同样此时y=23;再把y*y的值赋给y,就是529
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯