对于代码段
float x = 2.5, y = 4.7; int a = 7; printf("%.1f", x+a%3*(int)(x+y)%2/4);的结果为()
int a = 7;
float x = 2.5;
float y = 4.7;
cout << "(int)(x + y):" << (int)(x + y) << endl;
cout << a % 3 << " -> " << a % 3 * (int)(x + y)
<< " -> " << a % 3 * (int)(x + y) % 2
<< " -> " << a % 3 * (int)(x + y) % 2 / 4
<< " -> " << x + a % 3 * (int)(x + y) % 2 / 4
<< endl;
/*
Dev-C++ TDM-GCC 4.9.2 64-bit
Result:
(int)(x + y):7
1 -> 7 -> 1 -> 0 -> 2.5
*/
关于这题为什么是2.5可以从打印看出来,运算部分全部是int型的数据,最后1/4时自然就变成了0,所以最后结果是x+0。
inta = 7; floatx = 2.5; floaty = 4.7; cout << "(int)(x + y):"<< (int)(x + y) << endl; cout << a % 3<< " -> "<< a % 3* (int)(x + y) << " -> "<< a % 3* (int)(x + y) % 2 << " -> "<< a % 3* (int)(x + y) % 2/ 4 << " -> "<< x + a % 3* (int)(x + y) % 2/ 4 << endl; /* Dev-C++ TDM-GCC 4.9.2 64-bit Result: (int)(x + y):7 1 -> 7 -> 1 -> 0 -> 2.5 */ |
关于这题为什么是2.5可以从打印看出来,运算部分全部是int型的数据,最后1/4时自然就变成了0,所以最后结果是x+0。