关于C语言题目
设有变量定义:staticinta[10]={1,3,5,7,9};int*p=a;执行语句printf("%d",*p++**++p);输出的值是多少?请详细讲解下整个...
设有变量定义:
static int a[10]={1,3,5,7,9};
int * p=a ;
执行语句printf("%d",*p++**++p); 输出的值是多少? 请详细讲解下整个运算的过程,谢谢。 展开
static int a[10]={1,3,5,7,9};
int * p=a ;
执行语句printf("%d",*p++**++p); 输出的值是多少? 请详细讲解下整个运算的过程,谢谢。 展开
展开全部
应该是1乘以5吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要执行printf(),一般输出参数是按右向左计算的。在考虑优先级顺序,*和++同级,都高于*(乘号)
*p++**++p先计算++p,这样p指向a[1]为3,然后在执行*p++ * 3=3*3=9,最后p自增到a[2]
这样printf()显示是9,然后p指向a[2]=5。
至于++p和p++,在这里是不同的,++p是先增加p在参与计算
而p++是p先参与计算,然后p在增加1.
*p++**++p先计算++p,这样p指向a[1]为3,然后在执行*p++ * 3=3*3=9,最后p自增到a[2]
这样printf()显示是9,然后p指向a[2]=5。
至于++p和p++,在这里是不同的,++p是先增加p在参与计算
而p++是p先参与计算,然后p在增加1.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是在TC语言环境下吧?int占2个字节,k变量与char c[2]用的地址是同一片地址。k = -7,-7分为两个字节存储,当你输出c[0]和c[1]时,c[0]就是k的低字节位,c[2]就似乎k的高字节。-7二进制比较难算,举个简单例子,如果k=1,则其二进制为00000000 00000001,此时c[0] = 00000001,c[1] = 00000000,输出就是1,0了。-7一样,自己转转就出结果,原理就是这样。
补充:
我说的是TC,楼主应该也是在TC环境下,要不int不会占用2字节。int本身应该跟系统有关系,32位系统就应该占用4字节。
union共同体不是占用同一片空间?请问在哪种环境下不是呢,我所知道的好像都是描述为用同一片空间存储不同类型的变量。
补充:
我说的是TC,楼主应该也是在TC环境下,要不int不会占用2字节。int本身应该跟系统有关系,32位系统就应该占用4字节。
union共同体不是占用同一片空间?请问在哪种环境下不是呢,我所知道的好像都是描述为用同一片空间存储不同类型的变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询