昨天接受采访时,面试官问我一个问题:
为什么以下代码没有给出所需的答案?
int a = 100000, b = 100000;
long int c = a * b ;
Run Code Online (Sandbox Code Playgroud)
语言是C.
我已经告诉采访者我们首先计算100,000*100,000作为int(溢出),然后将其投入很长时间.
这是因为它首先将它计算为一个int,然后才将其转换为一个long变量.(因此它首先作为一个整数溢出,然后变成一个long)代码应该是
long int c = a*(long int)b;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |