c++萌新 发表于 2021-4-28 15:13:08

大佬们这题咋做啊!!

(1)        个程序代码片段的输出结果是什么?并简要阐述原因。
3、        实验代码如下:
int a=2;
表达式(1)a+=(a-=-a*a)++;
      (2)a+=a-=-a*a;

人造人 发表于 2021-4-28 15:25:36

第二个的结果有可能是 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)++;
      |                     ^~

c++萌新 发表于 2021-4-28 15:37:50

人造人 发表于 2021-4-28 15:25
第二个的结果有可能是 12,也有可能不是,如果是 12 的话,那么是这样算的
a += a -= -a * a;
a += a -=...

为啥a-=-4之后,a又等于6了?

人造人 发表于 2021-4-28 15:38:31

c++萌新 发表于 2021-4-28 15:37
为啥a-=-4之后,a又等于6了?

2 - (-4)

连帅帅 发表于 2021-4-28 16:08:17

人造人 发表于 2021-4-28 15:38
2 - (-4)

大佬,又看见你了{:10_250:}

lingnuous 发表于 2021-4-28 16:31:53

#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:33:08

lingnuous 发表于 2021-4-28 16:31
#include
int main(void)
{


你可以在编辑框里面分解测试一下,
页: [1]
查看完整版本: 大佬们这题咋做啊!!