有如下程序段: int i, n = 0; float x = 1, y1 = 2.1 / 1.9, y2 = 1.9 / 2.1; for ( i = 1; i < 22; i++ ) x = x * y1; while ( x != 1.0 ) { x = x * y2; n++; } printf( “ %d / n ”, n ); 请问执行结果是: 21 22 无限循环 程序崩溃
int i, n = 0; float x = 1, y1 = 2.1 / 1.9, y2 = 1.9 / 2.1; for ( i = 1; i < 22; i++ ) x = x * y1; while ( x != 1.0 ) { x = x * y2; n++; } printf( “ %d / n ”, n );
分析:浮点数的比较不可以用 = = 或者 != ,详见找工作笔试面试那些事儿(1)---C,C++基础和编程风格(2) ,会一直循环下去,选择C