大佬们这题咋做啊!!
(1) 个程序代码片段的输出结果是什么?并简要阐述原因。3、 实验代码如下:
int a=2;
表达式(1)a+=(a-=-a*a)++;
(2)a+=a-=-a*a;
第二个的结果有可能是 12,也有可能不是,如果是 12 的话,那么是这样算的
a += a -= -a * a;
a += a -= -2 * 2;
a += a -= -4;
减 -4,就是 +4
a -= -4;
a = 6;
a += a;
a = 12
第一个编译报错
需要说明的是,有可能结果不是 12
main.c: In function ‘main’:
main.c:5:7: warning: operation on ‘a’ may be undefined [-Wsequence-point]
5 | a += a -= -a * a;
| ^~
main.c: In function ‘main’:
main.c:5:23: error: lvalue required as increment operand
5 | a += (a -= -a * a)++;
| ^~
人造人 发表于 2021-4-28 15:25
第二个的结果有可能是 12,也有可能不是,如果是 12 的话,那么是这样算的
a += a -= -a * a;
a += a -=...
为啥a-=-4之后,a又等于6了? c++萌新 发表于 2021-4-28 15:37
为啥a-=-4之后,a又等于6了?
2 - (-4) 人造人 发表于 2021-4-28 15:38
2 - (-4)
大佬,又看见你了{:10_250:} #include <stdio.h>
int main(void)
{
int a=2;
// a +=(a -=-a*a)++;
int i;
a -=-a*a;
i = a;
i++;
a = a + i;
printf("%d\n",a);
//a+=a-=-a*a; //这个式子相当于 a就等于2倍的 a-=-a*a这个吧
int j;
a-=-a*a;
j = a;
printf("%d\n",a); //这一行输出测试一下
a = a + j;
printf("%d\n",a);
return 0;
} lingnuous 发表于 2021-4-28 16:31
#include
int main(void)
{
你可以在编辑框里面分解测试一下,
页:
[1]