考虑下面的C程序。
void f(int, short);
void main()
{
int i = 100;
short s = 12;
short *p = &s;
__________ ; // call to f()
}
将以下哪一个表达式放在上面的空白中,将不会导致类型检查错误?
(A) f(s,* s)
(B)我= f(i,s)
(C) f(i,* s)
(D) f(i,* p)答案: (D)
说明: i是整数,* p是指向short的指针的值。
1)选项1是错误的,因为我们将“ * S”作为第二个参数传递,请检查S是否不是指针变量。因此出错
2)第二种选择是我们试图将f(i,s)的值存储到i中,但要查看main之外没有返回类型的函数定义。它完全是无效的,因此分配是错误的。如此错误
3)选项3错误是因为选项1错误的原因相同
4)因此,选项d是正确的。
这个问题的测验