C之简易程序篇

来源:百度知道 编辑:UC知道 时间:2024/06/05 18:36:37
#include <stdio.h>
#include <math.h>

void main() /* 比较 */
{
int int_x = 10,int_y = 10,int_z = 11;
float float_r = 0.078;

clrscr();
if( int_x == int_y ) /* 成立 */
int_z = -1; /* z = -1 */
if( int_x > int_z ) /* 因z=-1,成立 */
从这里开始
int_x = 'A'; /* int_x = 65,字符‘A’的ASCII值是65 */ if( !(int_x > int_z) ) /* 不成立 */
int_x = 'B';
if( int_z ) /* z=-1,成立,只要括号里不为0,即为真值 */
int_z=255;
/* 实数值有能精确测试,因计算机表示0.078为0.0779999,故该语句永远不会为真 */
if( float_r == 0.078 )
float_r = 0.0;
/* 实数比较只能测试一个可接受的数值范围 */
else if( fabs(float_r-0.078) <= 0.0001 )
float_r = 1.1;
到这里都是很不理解
printf("int_x=%d,\n int_z=%d,\n float_r=%f\n",\
int_x,int_z,float_r);

1 int_x = 'A';
/* int_x = 65,字符‘A’的ASCII值是65 */ if( !(int_x > int_z) )
/* 不成立 */
2 int_x = 'B';
3 if( int_z )
/* z=-1,成立,只要括号里不为0,即为真值 */
4 int_z=255;
/* 实数值有能精确测试,因计算机表示0.078为0.0779999,故该语句永远不会为真 */
5 if( float_r == 0.078 )
6 float_r = 0.0;
/* 实数比较只能测试一个可接受的数值范围 */
7 else if( fabs(float_r-0.078) <= 0.0001 )
8 float_r = 1.1;

在c语言中,if int_z=0,为假执行5,int_z!=0时执行4,第5句不规范,float和double不要和数直接比较,他们有精度EPSINON限制,float的有效值6-7位,虽然定义了float_r=0.078,实际上0.0779999<float_r<0.0780001