识别隐式强制转换和显式强制转换

如果有人能回答我的问题,我将不胜感激。
识别隐式演员和显式演员?

int a = 2, b = 3; float f = 2.5; double d = -1.2; int int_result; float real_result; 

从forms上讲,这个问题在forms上是没有意义的。 没有“隐性演员”这样的东西。 cast的术语的重点是它指定一个明确请求的转换 。 Cast是(type)表单的运算符明确请求的类型转换。

在这种情况下,显式或隐式的内容称为转换 。 这可能是问题的作者可能意味着的,但他们对C术语的了解很少。

在您的代码示例中,只有一个初始化需要转换。 当然,转换是隐含的,因为代码中没有任何强制类型转换

根据定义,演员表总是明确的。 隐含的是转换 。 如果为对象分配的值不是对象的类型,则可能会发生以下两种情况之一:

  1. 值的类型与对象的类型“兼容”,即,标准允许这样的赋值。 然后,编译器为您进行转换。 这称为隐式转换。 例如, size_t i = -1; 具有int -1到size_t的隐式转换。
  2. 否则,编译器必须在这种情况下发出诊断,并且您需要使用强制转换来执行分配。 这种转换的结果是实现定义的或未定义的。

鉴于上述情况, 您很少需要在C中使用强制转换 。 您需要进行强制转换的次数之一可能是可变参数函数,因为编译器无法为您执行隐式转换。 另一个例子是以实现定义的方式将整数转换为指针。

再一次,没有隐式演员这样的东西。

好吧,这实际上是C类的家庭作业,并且在上面给出了第一行wirtten的一个示例答案,我没有在下面:这是,

 int_result = a * f; // a is casted implicitly to float by the multiplication operation a*f, // the product is then casted implicitly to int by the = (assignment) operation. real_result = a * f; real_result = (float) a * b; d = a + b / a * f; d = f * b / a + a; 

再次感谢,期待你的回复! 🙂

int a = 2,b = 3;

float f = 2.5;

双d = -1.2; //这是一个隐式演员。

int int_result;

float real_result;

上述陈述中没有明确的演员。