C语言中x=(a++)*(++a)和x=(++a)*(a++)运算后是多少?
#include<stdio.h>voidmain(){inta=3,x;x=(a++)*(++a);printf("x=%d\n",x);printf("a=%d\n"...
#include<stdio.h>
void main()
{
int a=3,x;
x=(a++)*(++a);
printf("x=%d\n",x);
printf("a=%d\n",a);
}
运行结果
x=16
a=5
#include<stdio.h>
void main()
{
int a=3,x;
x=(++a)*(a++);
printf("x=%d\n",x);
printf("a=%d\n",a);
}
运行结果也是
x=16
a=5
这是为什么啊?为什么不是12 和16呢 展开
void main()
{
int a=3,x;
x=(a++)*(++a);
printf("x=%d\n",x);
printf("a=%d\n",a);
}
运行结果
x=16
a=5
#include<stdio.h>
void main()
{
int a=3,x;
x=(++a)*(a++);
printf("x=%d\n",x);
printf("a=%d\n",a);
}
运行结果也是
x=16
a=5
这是为什么啊?为什么不是12 和16呢 展开
5个回答
展开全部
令i=3;
++i,i++;都是将i加1,但是
令x=(++i); y=(i++);
++i是返回i加1后的值,故等于4即x=4;
i++是返回i加1之前的值,故还是等于3即y=3;
楼主这时的疑问来了:
为什么不是12 和16呢?
但再这语句结束后,i都等于4;(***注意这句话***)
注意:x*y,这句话,是先对x里面的东西进行计算,对y里面的东西进行计算,谁先计算不一定,可以看成是同时的进行计算的。在这之后(注意这句话,下面用到的),在进行乘法运算!
注意:在这之后,说明那个(++i)和(i++)语句执行完毕,再看上面的括号里有***那句,明白了吗?此时x和y都等于4,所以是16不是12;
举个例子:
int i = 3, j = 3;
j++;
printf("%d, %d",(i++), j);
输出的是3和4,不信试试。
++i,i++;都是将i加1,但是
令x=(++i); y=(i++);
++i是返回i加1后的值,故等于4即x=4;
i++是返回i加1之前的值,故还是等于3即y=3;
楼主这时的疑问来了:
为什么不是12 和16呢?
但再这语句结束后,i都等于4;(***注意这句话***)
注意:x*y,这句话,是先对x里面的东西进行计算,对y里面的东西进行计算,谁先计算不一定,可以看成是同时的进行计算的。在这之后(注意这句话,下面用到的),在进行乘法运算!
注意:在这之后,说明那个(++i)和(i++)语句执行完毕,再看上面的括号里有***那句,明白了吗?此时x和y都等于4,所以是16不是12;
举个例子:
int i = 3, j = 3;
j++;
printf("%d, %d",(i++), j);
输出的是3和4,不信试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显然是一样的
x = (++a)*(a++)
和
x = (a++)*(++a)
都是先扫描,因为都含有++a,所以先把a变为4
然后做乘法 16
最后在对a++,a变为5
x = (++a)*(a++)
和
x = (a++)*(++a)
都是先扫描,因为都含有++a,所以先把a变为4
然后做乘法 16
最后在对a++,a变为5
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a = 3;
x=(a++)*(++a) -- 先++a,再a*a,之后a++
下面的一样...
x=(a++)*(++a) -- 先++a,再a*a,之后a++
下面的一样...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ree
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询