帮我解决几个问题,明天要考试了,帮帮忙!~谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:26:45
1.a为整型变量,且有以下语句:a=-017L;print("%d\n",a);输出的为什么是-17呢?
2.int x=10,y=3,z;则语句:printf("%d\n",z=(x%y,x/y);答案怎么是3呢?
3.若定义short a[5];则Turbo c编译系统为该数组分配__.字节的寸储单元?答案是10怎么来的?
4.int i,a[5];for(i=0,i<5,i++) a[i]=a[i]+i;
for(i=5,i>0,i--) printf("%2d",a[i-1]);
答案是10 6 3 10怎么来的啊?
4题的答案是:10,6,3,1,0这是怎么来的,我想肯定是答案错了吧

我不知道你从哪里搞来的答案...

1. 输出结果应该是-15
以0开始的整数表示8进制, 所以-017即是 -(1*8 + 7) = -15
那个L表示是long型, 无所谓; 如果a是int型的话, long会被转化为int

2. 逗号表达式(n1, n2, n3)的结果就只是n3
所以z = (x%y, x/y)相当于z = x/y = 3
结果当然就是3咯

3. 一个short占两个字节, 所以short[5]就是2 * 5 = 10

4. 错误的写法, int a[5]没有初始化, 具体的结果依赖于平台;
应该这么写
int i, a[5] = {0};
for( i=0; i<5; i++ )
a[i] = a[i] + i;
for( i=5; i>0; i-- )
printf("%2d", a[i - 1]);

结果应该是4, 3, 2, 1
它那个10 6 3 10完全不知所谓; 一则数量不对, 二则差值不对...

2是因为printf输出z的值,而Z后面的是一个逗号表达式,它的值为X/Y,又因为XY均为整型,所X/Y=3也是整型
3short数据一个要占2字节