为什么如下的代码int a=100,b=100;long int c=a * b;不能工作

2023-06-30   


根据C 的内部类型转换规则, 乘法是用int 进行的, 而其结果可能在转换为long 型并赋给左边的c 之前溢出或被截短。可以使用明确的类型转换, 强迫乘法以long 型进行:
   long int c = (long int)a * b;
   注意, (long int)(a * b) 不能达到需要的效果。
   当两个整数做除法而结果赋与一个浮点变量时, 也有可能有同样类型的问题,解决方法也是类似的。


相关内容:

  1. 请说出以下代码输出什么
  2. 若干个Java基础面试题
  3. 我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
  4. 请问如下代码执行后a和b的值分别是什么
  5. C#笔试题集合
  6. 临床执业医师考点:贫血