以下代码产生的结果为零:
double x = 1/2 + Math.Tan(0) + 1/2;
或任何其他包含Math.Tan和表达式中其他项目的代码。编译器似乎只是计算Tan值,而忽略表达式的其余部分。为什么会这样?
答案 0 :(得分:1)
将其分成几部分,并记住整数除法将得到一个整数,并且其分数部分将从结果中截断。
double x = 1/2 + Math.Tan(0) + 1/2;
double x = (1/2) + Math.Tan(0) + (1/2);
double x = (0) + 0 + (0);
double x = 0;
答案 1 :(得分:0)
表达式1/2
的值为0
,因为两个操作数都是整数,因此除法运算是整数除法,向下舍入到最接近的整数。因此1/2 + Math.Tan(0) + 1/2
等同于0 + 0 + 0
。