对于int m=3 n=4 表达式++(m*n)的值为多少
1个回答
展开全部
1、首先,这道题是错的,原因在于m*n值是一个临时变量。怎么解释这个临时变量呢??你可以这么来看,代码中并没有一个变量来存储m*n的结果,在编译器来看,这时候就会自己创建一个临时变量来存储这个m*n的值。然而,临时变量是不能进行自加或者自减的。所以这道题本身就是有问题的。
2、楼下对自加自减的理解也是错误的。首先,自加自减对数字本身来说都是自我加1或者自我减1。举个例子:不管++2或者2++,他的结果都是3,同理减法也一样。但是如果在自加减的同时,进行了其它操作,那么两者的意义就不同了。同样举个例子:
123int a = 2;printf("%d",++a);printf("%d",a++);
这里输出的两个值就不一样了,前者是3,后者是2,为什么?因为前者加号再数字前面,所以程序运行的顺序是先进行自加,然后再进行输出,也就是先2+1=3,然后输出3。后者是先进行输出,再进行自加,也就是先输出2,然后再2+1=3。同理,减法亦然
3、再举例子
12345int a = 2,b;b = a++printf("%d",b);b = ++aprintf("%d",b);
注意,这里的=号不是我们算数中的=号,而是赋值号,意思是将a++或者++a的值赋值给b。运用我再2中的讲解。这里第一个b=a++,是先将a赋值给b,然后再进行a的自加,所以这次运行完后,b的值是2,a的值是3。第二个b=++a,这里是先进行a的自加,再进行a赋值给b,所以最后的结果是a=3,b=3
2、楼下对自加自减的理解也是错误的。首先,自加自减对数字本身来说都是自我加1或者自我减1。举个例子:不管++2或者2++,他的结果都是3,同理减法也一样。但是如果在自加减的同时,进行了其它操作,那么两者的意义就不同了。同样举个例子:
123int a = 2;printf("%d",++a);printf("%d",a++);
这里输出的两个值就不一样了,前者是3,后者是2,为什么?因为前者加号再数字前面,所以程序运行的顺序是先进行自加,然后再进行输出,也就是先2+1=3,然后输出3。后者是先进行输出,再进行自加,也就是先输出2,然后再2+1=3。同理,减法亦然
3、再举例子
12345int a = 2,b;b = a++printf("%d",b);b = ++aprintf("%d",b);
注意,这里的=号不是我们算数中的=号,而是赋值号,意思是将a++或者++a的值赋值给b。运用我再2中的讲解。这里第一个b=a++,是先将a赋值给b,然后再进行a的自加,所以这次运行完后,b的值是2,a的值是3。第二个b=++a,这里是先进行a的自加,再进行a赋值给b,所以最后的结果是a=3,b=3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询