c语言 不同数据类型间的混合运算

发布网友 发布时间:2022-04-26 07:12

我来回答

2个回答

热心网友 时间:2022-06-25 03:23

c语言里 不同数据类型间的混合运算会强制转换的``
`如6.0/5``结果必然向float型转换```
比如char short型参与运算都是先转为int型`
float转为double型
int double混合运算时转为double型
都是向着占用较大的方向转换``使适用范围也更大```

``书上应该说的比较详细了 `呵呵`

热心网友 时间:2022-06-25 03:23

再回来说下,你可以这样进行检测,看隐式转换的问题还是溢出的问题:
typedef unsigned long long uint;//最新的编译器都支持这种用法吧,总之你找个能表示位的longlong就行了.
//uint
cout << (uint)iu + (uint)i << endl;

这里先将i转换成uint型,此时未溢出,然后加上转换uint(iu)的值,再将其提升为uint,因为原来已经为uint型,所以提升为uint时值不再改变,最后结果超出了uint的范围,如果你再对最终结果进行(uint),得到的答案你应该知道了.

------------------
溢出问题.

i=-8,转化为uint型后,为2^32-8,再加上个uint(10),结果为:
2^32+2,溢出后,结果为2.

你只考虑到一个很大的正数,却没有考虑到uint范围的问题!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com