我最近在学c语言是个新手 高手请教下!!!1

来源:百度知道 编辑:UC知道 时间:2024/05/30 22:43:53
问题1
int k=-1
printf("%d,%u\n",k,k);
无符号整形是怎么算的 举个例子 为什么 -1是16位全1的2进制呢?
问题2
int x,y,t;
x=y=3;
t=++x||++y;
执行后y怎么是3?
问题3
main()
{
int a;
printf("%d\n",(a=3*5,a*4,a+5);
}
执行后a 的值怎么是20
问题4
#include<stdio.h>
main()
{
int y,a;
y=2;a=1;
while(y--!=-1)
{do{a*=y;a++}while(y--);}
printf("%d,%d",a,y);
}
怎么是2 0 给个解释 具体点
问题5
将array1 右移1列 最右 一列换到最左
例如
array 1\ array 2
4 5 6 6 4 5
1 2 3 3 1 2
程序如下
#include<stdio.h>
main()
{
int a[2][3]={4,5,6,1,2,3},b[2][3];
int i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
for(j=0;j<3;j++)
{printf("%5d",a[i][j]);
a[i][j+1]=a[i][j]; 在一句不是将前一句的值给覆盖了吗???那后一值怎么输出啊 看不懂
}
printf("\n");
}
for(i=0;i<2;i++)
b[i][

问题一:无符号整数存储的是它的补码。用65535加那个负数然后转化为二进制就是结果了

问题二:在t=++x||++y;中因为++x为真,在||后的就不在计算。如果把||换为&那么y 就是4了。若++x是o那么继续计算++y。那样y也是4。

问题三: 在printf("%d\n",(a=3*5,a*4,a+5);中,a=3*5就付值a为15在printf中输出的是a+5的值,而不是a的值。

问题四:主要是while(y--!=-1) {do{a*=y;a++}while(y--);} 的理解!!它是一个嵌套循环大循环是while循环,里面是do 语句;
while(判别式)循环。所以要先看while(y--!=-1)对其判断,然后执行大花括号里的do while循环,内循环结束一圈后在去判断while(y--!=-1)成立就继续执行内循环,直到while(y--!=-1)不成立为止

问题五:和问题4类似,你没闹懂嵌套循环,而且写的太麻烦了,很难看明白。

问题六:func功能你没用上。虽然开始定义了func的作用,但func(x,y)没有调用函数

问题2: X=Y=3 所以X=3 Y=3
在执行t=++x||++y; 的时候, 只要"||"前面的语句为真时,整个表达式的值就为真.后面的就不执行了.所以尽管++Y了还是3.
问题3:printf("%d\n",(a=3*5,a*4,a+5);
是取最后一个逗号后面的值,虽然并没有赋给A的值, 但语句中第一个逗号已经给了,A=3*5,所以A的值为15,再执行第二个逗号,A*4,结果为60,但是这个60是表达式的值,而A的值不变,还是15,最后执行A+5,取最后一个逗号后面的值,所以是20.
另外 ..建议你采纳shenqq163为最佳答案.

问题一:有关负数在计算机内的存储可以自己查下 ,负数的二进制存储方式是以补码形式存储的
也就是说对于16位处理器来说-1其实是对1000000000000001除首位外取反