C语言的初级上机题,阅读下面的程序并分析其运行结果。

[复制链接]
查看11 | 回复5 | 2011-10-8 09:19:45 | 显示全部楼层 |阅读模式
A:不管你输入什么数字,结果都是OK!分析:对if中的条件表达式来看,他的格式是x=1.23,咋一看,好像是判断输入的值与1.23比较,但是,你要明白,C中一个=是赋值的意思,而两个==是判断的意思,完全是不同的运算符。所以,这个x=1.23就编程了赋值的意思了,可不是判断哦。那么,判断在哪儿呢?这就要给你说了,对于用在判断或者条件部分的表达式如果不是显示表达式,那么首先将这个表达式化简,就是看他到底是用哪个量来参与运算的了。这儿明显是x直接参与运算。这时候,系统默认是这个量与0进行比较。如果这个量正好为0,那么好,算条件不成立,如果是非零值,那么好,算条件成立,但是这个判断是虚拟判断,他可完全又不等价与写成显示表达方式的,这个要区别开。即,在...
回复

使用道具 举报

千问 | 2011-10-8 09:19:45 | 显示全部楼层
A程序运行结果:输出OK,因为if条件语句中x=1.23是赋值语句,不是判断语句,又因x大于0,故条件成立,所以输出OKB将条件修改为x==1.23后,理论上讲,这个if条件是不可能成立的。因为float型不可以直接进行大小的比较,尤其是等于的判断。原因在于计算机在内存表示float的时候都是有误差的,可以参考http://blog.csdn.net/t...
回复

使用道具 举报

千问 | 2011-10-8 09:19:45 | 显示全部楼层
不管你输入多少给x,结果 都输出 OK!要分清变量的值和表达式的值的区别。x=1.23是一个赋值语句,在对变量x赋值为1.23的同时,表达式x=1.23 也就为真了,所以就一直打印OK!如果改成x==1.23,不管你输入什么也不会有OK!输出。浮点数据的相等关系的判断是不能用==的。可以abs(x-1.23)<0.000001。...
回复

使用道具 举报

千问 | 2011-10-8 09:19:45 | 显示全部楼层
A:输出“OK!”,在你给变量x赋值后,语句if(x=1.23)又将1.23赋值给了x,x的值变成1.23,c语言规定,只要结果不为0,就认为条件为真,所以会执行语句printf("OK!");B:将条件修改为x==1.23后,程序会在你输入1.23后,输出OK!,如果你输入的值不是1.23的话,将什么都不会输出。...
回复

使用道具 举报

千问 | 2011-10-8 09:19:45 | 显示全部楼层
A、在语句if(x = 1.23)中,逻辑结果为真,所以无论从键盘输入何值,该程序总是打印 OK!B、改为if(x == 1.23)后,在VC++6.0中,1.23被默认double型,即使键盘输入1.23,也未必满足x == 1.23的条件,如果改为if(x == 1.23f),则在VC++6.0中,程序可以输出 OK!。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行