【发布时间】:2018-09-30 00:43:09
【问题描述】:
今天我发现了一些有趣而奇怪的东西。
下面代码的输出是:
410065408
9000000000
我发现带括号的“强制类型转换”是错误的。
我猜return (long) (a * b) 等于return (long) ((int) a * b)。
410065408(int) 的转换还是410065408(long)。
我说的对吗?
int main(int argc, char *argv[])
{
int a = 100000, b = 90000;
printf("%ld\n%ld\n", product_wrong(a, b), product_right(a, b));
return 0;
}
long product_wrong(int a, int b)
{
return (long) (a * b);
}
long product_right(int a, int b)
{
return (long) a * b;
}
【问题讨论】:
标签: c type-conversion