int a=1 ;(a++)*(++a)的值是多少?怎么算
3个回答
展开全部
int a=1 ;(a++)*(++a)的值是3
(a++):a先参与运算后,a的值再自增1
(++a):a先自增1后再参与运算
(a++)*(++a):a的初始值=1,(a++)a= 1参与运算,a的值自增1后等于2
(++a)a的值自增1后等于3,再参与运算
所以(a++)*(++a) = 1*3 = 3
(a++)*(a++)= 1*2=2; //(a++)a= 1参与运算,a的值自增1后等于2
//(a++)a= 2参与运算,a的值自增1后等于3
(++a)*(a++)=2*2=4; //(++a)a的值自增1后等于2,再参与运算
//(a++)a= 2参与运算,a的值自增1后等于3
(++a)*(++a)=2*3=6; //(++a)a的值自增1后等于2,再参与运算
//(++a)a的值自增1后等于3,再参与运算
(a++):a先参与运算后,a的值再自增1
(++a):a先自增1后再参与运算
(a++)*(++a):a的初始值=1,(a++)a= 1参与运算,a的值自增1后等于2
(++a)a的值自增1后等于3,再参与运算
所以(a++)*(++a) = 1*3 = 3
(a++)*(a++)= 1*2=2; //(a++)a= 1参与运算,a的值自增1后等于2
//(a++)a= 2参与运算,a的值自增1后等于3
(++a)*(a++)=2*2=4; //(++a)a的值自增1后等于2,再参与运算
//(a++)a= 2参与运算,a的值自增1后等于3
(++a)*(++a)=2*3=6; //(++a)a的值自增1后等于2,再参与运算
//(++a)a的值自增1后等于3,再参与运算
展开全部
首先++i是“先”自增、“后”执行;i++是“先”执行、“后”自增;
这里所谓的“先”、“后”,对于不同的编程语言意义不同——在C语言中所谓的“先”“后”是相对于一条完整的语句而言的。也就是说,在C语言中,++i是在整条语句执行之前“先”自增,“后”执行整条语句;而i++是“先”执行完整条语句、“后”自增。
明白了这个问题,再来看你的问题:
1、先看前面的“(a++)”,是需要等执行完整条语句,也就是直到遇到后面的分号才将a的值增加1;
2、再看后面的(++a),是需要在整条语句执行之前,也就是上一个语句“int a=1;”之后就直接把a的值加1,而不是等执行了*前面的半条语句“(a++)”后才自增。
注意理解:“先”、“后”是相当于一条完整的C语句而言的,而不是以那个乘号为准的!
明白了这个道理,那么(a++)*(a++)就是1,(++a)*(a++)或(a++)*(++a)就是4,(++a)*(++a)就是9,
这里所谓的“先”、“后”,对于不同的编程语言意义不同——在C语言中所谓的“先”“后”是相对于一条完整的语句而言的。也就是说,在C语言中,++i是在整条语句执行之前“先”自增,“后”执行整条语句;而i++是“先”执行完整条语句、“后”自增。
明白了这个问题,再来看你的问题:
1、先看前面的“(a++)”,是需要等执行完整条语句,也就是直到遇到后面的分号才将a的值增加1;
2、再看后面的(++a),是需要在整条语句执行之前,也就是上一个语句“int a=1;”之后就直接把a的值加1,而不是等执行了*前面的半条语句“(a++)”后才自增。
注意理解:“先”、“后”是相当于一条完整的C语句而言的,而不是以那个乘号为准的!
明白了这个道理,那么(a++)*(a++)就是1,(++a)*(a++)或(a++)*(++a)就是4,(++a)*(++a)就是9,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(a++)*(++a)的值是1*3=3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询