c语言程序输出

#include<stdio.h>

void main()
{
int a;
unsigned int b;
a=32768;
b=a;
printf("%d %u\n ",a,b);
}

这个程序在vc下int存储的大小是没有影响的,那要是在按照题意这个答案应该是多少呢

在VC下int是4个字节 故输出结果是 32768 32768

但你说的是按照题意,意思是把int当成是2个字节吗?那结果应该为:-32768 32768

因为2个字节有符号类型最大的正整数为32767 故32768的二进制形式按有符号输出就变成了负数 依照补码的读数法则 是最小的负数-32768

无符号类型由于多了最开头的符号位 所以表示范围更大些 可以表示32768

如果你只要VC这个工具 那你可以用4个字节也就是32位的实验一下
题中32768对应2个字节 那2的31次方2147483648应该对应4个字节的情况

写下面的程序在VC下验证:

#include<stdio.h>

void main()
{
int a;
unsigned int b;
a=2147483648;
b=a;
printf("%d %u\n ",a,b);
}

输出结果为

-2147483648 2147483648
Press any key to continue

验证了我的答案
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-03
32768 32768
将有符号整形赋给无符号整形数值是不会变的
如果将无符号整形赋给有符号整形那么就有可能发生改变!
因为有符号整形有一位是符号位!
第2个回答  2010-04-03
-bash-3.00$./a.out
sizeof(int):4,sizeof(unsigned int):4
32768 32768
-bash-3.00$cat ans.cpp
#include<stdio.h>

int main()
{
int a;
unsigned int b;
a=32768;
b=a;
printf("sizeof(int):%d,sizeof(unsigned int):%d\n",sizeof(int),sizeof(unsigned));
printf("%d %u\n ",a,b);
}
-bash-3.00$arch
sun4
-bash-3.00$
看到int在机器上是4个字节,一个字节8为,共32位。有的unsigned和int不一样长。因此,输出的结果和机器有关。
第3个回答  2010-04-03
这个问题 使这样的

前面的一个输出就是32768

最高位是符号为

后面的就是把最高位当作数字为输出
第4个回答  2020-02-08
我想输出为234,主要是判断f函数的作用,取依次数组a中的数在数组b中是否找到相等的,如果找不到保存在数组c中,最后输出数组c中的值
第5个回答  2019-01-13
先看子函数f。i和j为循环变化量,m和n为循环次数,t为判断字符,k为C数组的行标。纵观整个子函数,从a[0]循环到a[m-1],每一个循环中,a[i]都要与b[0]到b[n-1]比较,如果a[i]不等于b[j],t为1,a[i]的值就赋予给c数组。记住,是每一次循环,而且a[i]不等于b[j],a[i]就会赋值给c数组。最后面,循环结束后,k计算赋值次数。
而主函数中,x数组和y数组分别给出,然后调用到子函数里面,最后,输出z[j].
写得比较抽象,因为这里很难写得清楚每一个步骤,如果想要详细了解的话,可以加我QQ,语音解释。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网