c语言中,为什么k%int(f)不合法

Python014

c语言中,为什么k%int(f)不合法,第1张

C语言中没有int(f)这种强制类型转换的写法,只有(int)f。

以防有人不懂为什么我补充一下好了:

int(f)这种写法叫做functional cast notation,是C++语法,本质上是调用了operator int()这个成员函数,因此可以进行重载。

而(int)f这种写法叫做C-style cast notation,是C语言强制转换的标准写法,C++中也兼容。

在C++中,使用int()可以对某些重载了operator int()的类的对象进行强制类型转换,例如Foobar类重载了operator int(),且有Foobar类的对象f,那么可以使用int(f)将f强制转换为一个int类型。此时C风格的(int)f则不能通过编译。

C语言中则没有int()这种写法。如果你学的是C语言,却发现自己的代码int(f)这种写法也可以通过编译,那么请检查一下你的源代码后缀名到底是.c还是.cpp,前者表示C源代码,后者表示C++源代码。一定要注意C和C++是两种不同的语言

0xF0000000 超过了 int 的表示范围,在对其进行运算时会自动将其转换为 unsigned int 类型,这一过程称为“整型提升”。-0xF0000000 运算的结果也是 unsigned int 类型,所以是大于 0 的。