c语言程序运行结果为什么出现1.#INF00?

作者&投稿:阴瑾 (若有异议请与网页底部的电邮联系)
请问你关于【c语言程序运行结果为什么出现1.#INF00?】的这个问题是怎样解决的?谢谢~

一般是因为除零,或者数据溢出造成的,看看程序里面有没有 a/0, 或者大数相乘的情形。

x=++i||...中由于||前的++i是2为“真”,即取数值1。所以||后面的语句都不执行了,所以是1,2,1,1。

是因为运算结果溢出。

解决办法,例:

chara=126,则a+45=126+45=172-256=-85

uchara=2,则a-100=-98+256=158

a,b基本类型相同时,有符号与无符号数的转换:

无符号a-->有符号b

if(a<max_count/2)b=a

elseb=a-[max_count]

有符号数a-->无符号数b

if(a>0)b=a

elseb=a+[max_count]

例1chara=-119;ucharb=a;则b=-119+256=137

例2uchara=137;charb=a;则b=137-256=-119

例3signedcharchr=127;

intsum=127;

chr+=10;

sum+=chr;

sum值是

思路先把chr当成无符号数,chr+=10变成137然后把chr转化为有符号数137-256=-119-119+sum(127)=8

扩展资料

溢出的原因,考虑两个非负整数x和y,满足0<=x,y<=(2^w)-1。xy可以被表示为w位无符号数字,然而考虑它们的和的话,我们可以得到0<=x+y<=2^(w+1)-2。这个和需要w+1位来表示。如果再用其他数加上这个结果的话,可能又将需要w+2,w+3位来表示新的结果。

这种持续的“字长膨胀“意味着,如果想要完整地表示算数运算的结果,就不能对字长做任何限制(实际上Lisp就是这样干的)。如果限制了数据类型的字长,溢出的发生是不可避免的。由于溢出后的结果往往不是想要的结果,必须对溢出时的情形另做处理,但在此之前我们必须得先能够判断什么时候发生了溢出。

无符号整数的溢出判断比较简单:对一个字长w的无符号数加法运算,当x+y>=2^w时,第w+1位被程序舍去,相当于在x+y的和的基础上减去了2^w。由于x,y<=(2^w)-1,所以有x+y<x(或者x+y<y)。

intuadd_ok(unsignedx,unsignedy){

unsignedsum=x+y;

returnsum>=x;

}



当你输入的c,n值过大的时候,运算结果就会溢出(数据过大或过小超过计算机所能存储的值。。。),就出现你说的那种情况了
你用0.5,0.2试试。。。

我也遇到你说的问题了,你是怎么解决的,求组!!!谢谢

那你最后是怎么解决的?

不大明白啊
把程序贴上来看看


C语言程序运行结果是什么
a==0,退出while循环,*p='\\0',所以s[3]=='\\0'(字符串结束符),输出字符数组s,因此运行结果是C51

c语言分析题:下面程序运行的结果为n=4,请说明详细的过程,谢谢
进入do-while循环,i%3为非零,continue。到while处判断,!i为零,跳出do-while循环。n++,第一次for循环结束,i++ 刚刚开始第二次for循环,i=3,n=1 进入do-while循环,i%3为零,执行n++。到while处判断,!i为零,跳出do-while循环。n++,第二次for循环结束,i++ 刚刚开始第三次for循环...

C语言问题:下面程序的运行结果是
看看程序逐步运行跟踪结果:i=1;[i=1] i<5成立,开始循环: i%2为真, printf输出[*], printf累计输出[*#]i++;[i=2] i<5成立,继续循环: i%2为假, continue;i++;[i=3] i<5成立,继续循环: i%2为真, 累计输出[*#*], 累计输出[*#*#]i++;[i=4] i<5成立,继续循环: i%2为...

C语言题目 1.下面程序的运行结果是( )
1,-2 分析运行过程:y=2,a=1;判断,为真,y变为1 进入do循环:a=1*1=1; a++变为2 内循环判断y--为真,y变为0;再次内循环:a=2*0=0; a++变为1 内循环判断y--为假,y变为-1;外循环判断为假,y变为-2;所以,最后的输出是1,-2 ...

请问这个C语言程序运行结果是什么呢 麻烦写一下草稿?
运行结果是3 2 -1 && 运算符的判断逻辑是如果前面的为真,那么需要判断后面的,同为真,才返回真。如果前面的为假,那么后面的运算不需要执行,直接返回假。++i 的运算逻辑是先执行i=i+1的操作,然后对i之后的值进行判断 i++的运算逻辑是先进行值i的判断,然后执行值的增加i=i+1。因此,运行...

c语言中,下面程序的运行结果是?
1.程序的运行结果是:1,-2 2.解释每一步的运行过程:include <stdio.h> void main(){ int y, a ;y=2, a=1;while (y--!=-1){ do{ a*=y ;a++ ;} while(y--);} printf("%d,%d\\n",a,y);} 从y=2,a=1开始哈 (首先我们要知道后自减y--型的返回值是y自减前的值 ...

用C语言编写的程序,执行结果是多少?
程序输出的结果为a=11,b=13。程序的执行过程:首先定义了a的值为12,b的值为12,然后执行我们的输出语句,我们输出的不是a和b的值,而是表达式“--a”和表达式“++b”的值,因为前缀的“++”和“--”都是先进行加一或者减一的操作,再输出。所以说“--a”输出的结果为11,“++b”输出的...

有段C语言程序、求输出结果:main()int y=3,x=3,z=1;printf("%d%d\\n...
所以输出的值只能为y(值为3),然后再进行y++运算 下一个%d的值为z+2(值为3)运行结果为:3 3 楼主可以在编译环境中试一下下面的程序,就知道答案的正确性了:include<stdio.h> void main(){ int y=3,x=3,z=1;printf("%d\\n%d\\n",(++x,y++),z+2);} ...

C语言 以下程序的运行结果为( ) void fun(int n) { if(n) fun(n-1...
先递归,再打印,当n为0的时候结束打印,但0还是会执行后续的输出 于是是从0打印到5 选c

C语言:写出程序运行结果并解释为什么
\/\/后置++做完之后 c是 1 ,b是2 e=15\/10; \/\/虽然e是浮点数,但是赋值在后,所以e是1.0,不是1.5 f=d\/10; \/\/因为d是浮点数,所以做了实数除法,所以f是 1.5 printf("%d,%d,%d,%f,%f,%f",a,b,c,d,e,f);return 0;} 因此结果是:0,2,1,15.0, 1.0,1.5 ...

城子河区19210391404: 请问你关于【c语言程序运行结果为什么出现1.#INF00?】的这个问题是怎样解决的?谢谢 -
芒沈地喹: 一般是因为除零,或者数据溢出造成的,看看程序里面有没有 a/0, 或者大数相乘的情形.

城子河区19210391404: C语言运行结果中出现“1.#INF00”,为什么? -
芒沈地喹: ascii 码

城子河区19210391404: 一个简单的C语言题.关于递归的.程序运行结果为什么是1 -
芒沈地喹: 根据递归来推导:fun(3)==1.0/3+1.0/fun(2) ==1.0/3+1.0/(1.0/2+1.0/fun(1)) //fun(1)是已经知道的,是1 ==1.0/3+1.0/(1.0/2+1.0/1.0) ==1.0/3+1.0/(3.0/2) ==1.0/3+2.0/3 ==1.0 所以他就是等于1,当然就是输出1.

城子河区19210391404: 看一下这个c语言程序的运行结果,为什么编译器result的结果一直是1,我觉得好像是1, - 1,1, - 1…… -
芒沈地喹: 你的程序我用tcc编译没有出错,应该错在: numDft[i] = rand () % 10; //printf ("%i %i %i %i\n", numDft[0], numDft[1], numDft[2], numDft[3]); 你的C编译器不支持//注释,改用/**/可能可以,顺便请告诉我们你的编译器是什么.

城子河区19210391404: 请问c语言程序运行出现结果p= - 1.#IND00是怎么回事,,有好几次出现这样的情况了 -
芒沈地喹: 应该是除数为0造成的溢出

城子河区19210391404: 以下程序运行结果为什么会是1
芒沈地喹: if (c = a) ,“=”是赋值运算符,这个if条件是为c赋值、然后判断c(也就是a)的值是否为非0.C语言里没有布尔型,约定非0为真、0为假.C语言里这种if的写法还算常见. if (c == a),“==”是逻辑运算符,比较c和a是否相等,相等为真、不等为假. 再看这段代码,应该就可以理解了. 看上面的答案,还真有人不知道C语言怎么处理布尔值的.

城子河区19210391404: C语言程序结果有 - 1.#J,是什么原因? -
芒沈地喹: 浮点数错误.和输出格式相关,可以表示一个NaN(非数值)或者负无穷大的数值.例子可以看这里:http://stackoverflow.com/questions/840081/what-does-floating-point-error-1-j-mean.

城子河区19210391404: 写出下面程序的输出结果,C语言的,为什么答案是#
芒沈地喹: n++是先引用后自增,所以先是2%3=2,为真,所以输出“*”,你那输出#是错误的

城子河区19210391404: 编写C语言程序时,没有任何错误,但运行结果显示C1.exe找不到,是怎么回事? -
芒沈地喹: 是CL.exe文件找不到吧 .你使用的是VC6?是不是下载的绿色版本啊?1)清注册表,把所有VC6相关的内容都清掉2)重启VC6以后,Tools->Options->Directories executatble files: (里面会有很多其它东西,把下面4项按照顺序放在其它东西...

城子河区19210391404: C语言 为什么运行结果d比f多一个0? -
芒沈地喹: %f %d与变量名无关,%f表示对应的变量是一个float变量,%d表示对应的变量是一个int变量 .%lf表示对应的变量是一个double变量

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