【发布时间】:2018-10-04 07:17:55
【问题描述】:
首先发生什么,截断或求值?如果我这样做:
int a = (2+3)*10.5;
a 得到 52,但如果我这样做:
int a = 30 / 4 * 5;
a 得到 35。
所以一个表达式首先被求值然后被截断。那么截断的值用于其他计算呢?因为在第二个语句中,“30/4”首先被评估,然后被截断为 7。这个的确切规则是什么?文档中的任何内容...我不是在谈论类型转换,在这种情况下只是截断,比如表达式被一个接一个地截断?
【问题讨论】:
-
使用运算符优先级来扣除数据的类型......如果
/和*具有相同的优先级和左关联性,它们将作为(30 / 4) * 5执行,不会他们?30 / 4 => 7和7 * 5 => 35。正确的?没有截断,您将两个整数相除,并得到int结果。试试30.0 / 4 * 5看看会发生什么。
标签: c truncation