C - 这个答案的解释

时间:2018-06-18 12:28:39

标签: c

int main(void)
{ 
    float w = 8.456;
    int b = 3;

    printf("%d", (int)(b * w));

    return 0;
}

似乎无法理解这与25相等,即使它是int * float并且显示为intint也是如此printf 1}}表示int行... Isn&#39; t float乘以0 a public IEnumerable<tblCustomerType> GetCustomerType() { // IEnumerable<tblCustomerType> result; using (var context = new dbLMSEntities()) { var x = (from c in context.tblCustomerTypes select new {c.CustomerTypeID, c.CustomerType}).AsEnumerable(); return x; }

2 个答案:

答案 0 :(得分:8)

b*w结果为float(= 25.368),然后您将其转换为int,并将其截断为25

NB:
如果您期望结果为24,则两个变量都应为ints

请参阅:c-language data type arithmetic rules

答案 1 :(得分:4)

当你将一个整数乘以浮点数时,所谓的&#34;通常的算术转换&#34; (UAC)将举行。根据UAC,如果其中一个操作数是float而另一个是整数,则两个操作数都将转换为float:3.0 * 8.456 = 25.368。之后,在printf转换为int时,则会截断小数部分,结果为25。