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 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语言编写。拜托高手指教