#include<stdio.h>
int main()
{
int i=3,val;
val=sizeof (f(i))+ +f(i=1)+ +f(i-1);
printf("%d%d",val,i);
getch();
return 0;
}
int f(int num)
{
return num*5;
}
编译器编译程序并给出输出7 1 ..&#34; + +&#34;意味着???
答案 0 :(得分:2)
首先请注意,sizeof
是可编译的,因此val
中的第一个字词为sizeof(int)
:int
是f
的返回类型。
要分配给val
的整个表达式的值是 undefined ,因为+
作为二元和一元运算符未按顺序排序。实质上,您不知道在i = 1
评估之前或之后是否会发生i - 1
。
就具体情况而言,a + + b
被评估为a + (+b)
。 +b
只是一元加(几乎一个无操作,但确实做了一些微妙的类型强制),另一个+
是加法运算符带两个参数。