如果有人能回答我的问题,我将不胜感激 识别隐式演员和显式演员吗?
int a = 2, b = 3;
float f = 2.5;
double d = -1.2;
int int_result;
float real_result;
答案 0 :(得分:3)
从形式上看,这个问题从术语的角度来看是没有意义的。没有“隐性演员”这样的东西。术语 cast 的重点在于它指定了明确请求的转换。 Cast是(type)
表单的运算符明确请求的类型转换。
在这种情况下,显式或隐式的内容称为转换。这可能是问题的作者可能意味着什么,但他们对C术语的知识不足搞砸了。
在您的代码示例中,只有一个初始化需要转换。当然,这种转换是隐含的,因为代码中没有强制转换。
答案 1 :(得分:2)
根据定义,强制转换始终是明确的。隐含的是转换。当为对象分配的值不是对象的类型时,可能会发生以下两种情况之一:
size_t i = -1;
隐式转换int
-1到size_t
。鉴于上述情况,you rarely need casts in C。您需要进行强制转换的次数之一可能是可变参数函数,因为编译器无法为您执行隐式转换。另一个例子是以实现定义的方式将整数转换为指针。
再一次,没有隐式强制转换。
答案 2 :(得分:0)
嗯,这实际上是一个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;
再次感谢,期待你的回复! :)
答案 3 :(得分:-1)
int a = 2,b = 3;
float f = 2.5;
双d = -1.2; //这是一个隐式演员。
int int_result;
float real_result;
上述陈述中没有明确的演员。