C程序 计算系统中整数的储存位数

来源:百度知道 编辑:UC知道 时间:2024/05/29 08:53:34
#include<stdio.h>
int int_size(void)
{
int a=~0,i=0;

while( a&1 ){

a>>=1;
i++;

}

return i;
}

int main(void)
{
int int_size(void) , a;
a=int_size() ;

printf("intsize is %i\n",a);

return 0;

}

这个C程序到底那里有问题?为什么没有结果?执行窗口什么也没显示,应该怎样修改?

再次运行 出现“LINK : fatal error LNK1168: cannot open Debug/(程序名.exe)for writing ”的提示 我把临时窗口关了 但任务管理器里还有程序的进程 怎样才能把程序正确关掉?

int a改成unsigned int a;
不然a是-1,最高位是1的话,移位后左边补的还是1,a永远保持-1,a&1永远是真.

你这里的while循环是死循环。出不去的。

sizeof 是系统库函数中的求长度的函数,可以直接使用比如:sizeof(int),sizeof(char),求出的是字节数。。。。不过我想你应该知道,只是自己编一个新的函数来写,还是小小的废话一下。。。嘿嘿,顺便说一下,最好是做左移位,因为你定义的是int,有符号类型,做右移可能是算术右移,则出现二楼和三楼所述的情况.

在你的系统和编译环境下a=~0(假设int占两字节,即a=1111111111111111)
当a进行a>>=1;操作的结果 a的值将会等于1111111111111111不变,所以函数内循环是死循环 得不出你要的结果

int int_size(void)
{
int a;
return sizeof(a)*4;
}

c语言中,提示输入一个4位数的整数,然后把每一位相加? c++6.0中给一个大与3位数的整数进行百,十位互换的程序 在c 语言中输入n 个整数,相同的输出一个,计算个数 整数分解的C语言程序 c语言:任意输入一个整数 判断它的位数 输出各个位上的数。高手帮忙给个程序!! c语言问题 写一个从5位数中输出最大几最小的说程序 c的数组的方法计算超长整数加减法 急求用分治法实现两个大整数(要求位数无限制)相乘的C/C++源代码? 谁会用C语言编一程序,只要能进行10以内的整数计算就行,知道的大哥帮帮忙啦,先说一声"谢谢"啦!!!! 利用动态分配内存方法,编写一个能计算N位整数相加的程序,N<=100。用c语言编写。拜托高手指教