c - 以下表达式中发生了什么转换?

标签 c type-conversion

在下面的表达式中,发生了什么转换?

long long a;
long long b;
double c;
b=a*c;

假设 long long 类型是 8 字节。

如果ab都是int,那么在表达式b = a * c中,a会被转为doublec相乘,结果会被转为int赋值给b.

我的假设是否正确?

最佳答案

b=a*c;

相当于:

b=(long long) ( (double)a * c );

所以涉及到两个转换,第一个是从long longdouble,第二个是从double结果到long long

更多详情请查看this page from Joachim Pileborg's评论

关于c - 以下表达式中发生了什么转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31335601/

相关文章:

c# - 如何检查类型是否可以在 C# 中转换为另一种类型

在 C 中将 signed char 转换为 unsigned int

C 程序中的命令行参数(来自 shell)

在包含函数退出后通过其地址调用嵌套函数?

c++ - C++ 风格的转换运算符是否会更改它转换的指针?

Scala案例类转换

sql - 在 SQL 查询中将 int 或 null 转换为 boolean 值的最佳方法是什么?

c - 用于 nasm/yasm 和 C 的 Polygot 包含文件

c - 运行时错误(堆栈溢出)

c++ - 生成范围内的随机数c++