C语言一道选择题求解释
#include<stdio.h>intmain(){intx[]={10,20,30};int*px=x;printf("%d,",++*px);printf("%d,...
#include <stdio.h>int main(){ int x[] = {10, 20, 30};int *px = x;printf("%d,", ++*px); printf("%d,", *px);
/* 20 20*/ px = x;printf("%d,", (*px)++); printf("%d,", *px);
/* 11 11 */
px = x;printf("%d,", *px++); printf("%d,", *px);
/* 10 20 */ px = x;printf("%d,", *++px); printf("%d\n", *px); /* 20 20 */
return 0;}
这道题答案应该是多少?我都被搞晕了。注释里面是我的答案,但是肯定是错的~55 展开
/* 20 20*/ px = x;printf("%d,", (*px)++); printf("%d,", *px);
/* 11 11 */
px = x;printf("%d,", *px++); printf("%d,", *px);
/* 10 20 */ px = x;printf("%d,", *++px); printf("%d\n", *px); /* 20 20 */
return 0;}
这道题答案应该是多少?我都被搞晕了。注释里面是我的答案,但是肯定是错的~55 展开
4个回答
展开全部
正确答案是11,11,11,12,12,20,20,20。int *px=x就是px的指针指向数组x的首元素。第一行的两个printf,第一个是先引用指针px,既此时*px为10;相当于++(*px);++是自加运算,与*px++区别就是,它在该表达式运行前就进行了自加。第二个结果为11,是因为数组x中的10已经变为11了。第二行原理同上。第三行第一个为12是px先进行地址加1;既指向数组x中的第二个元素20,但在此表达式不生效,所以值还是数组x的第一个元素。*与++运算同级的,所以要注意运算符前后顺序的。
展开全部
a<b<c
先执行a<b,即1<2,为真,再执行真<c,真为1,所以1<2所以也为真,执行循环体,ab互换,c减1=1
这时a<b,即2<1为假,假为0,c为1,所以0<1为真,所以还是执行循环体,ab互换,c减1=0
这时a<b,即1<2,为真,c为0,即1<0为假,所以不执行循环体,执行输入语句。这时a=1,b=2,c=0
先执行a<b,即1<2,为真,再执行真<c,真为1,所以1<2所以也为真,执行循环体,ab互换,c减1=1
这时a<b,即2<1为假,假为0,c为1,所以0<1为真,所以还是执行循环体,ab互换,c减1=0
这时a<b,即1<2,为真,c为0,即1<0为假,所以不执行循环体,执行输入语句。这时a=1,b=2,c=0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码运行下?
追问
运行一下,但是还是不懂啊。。。考试没电脑运行呢~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |