i++

来源:互联网 发布:c语言出现null怎么办 编辑:程序博客网 时间:2024/04/28 12:33

面试题1:what will be the output of the following code?

int i=3,j=4;i?i++:++j;printf("%d %d\n",i,j);

A.3 3 B.4 4 C.3 4 D.4 3





解析:

i?i++:j++的意思是说如果问好前面的i是真,则进行i++,否则进行++j。由于i是3,所以是真,执行i++,j不变化。所以答案是4 和4

如果i?i++:++j 换做0?i++:++j,则答案就是3和5

答案:B


面试题2:What will be the output of the following C code?

#define product(x) (x*x)int main(){int i=3,j,k;j=product(i++);k=product(++i);printf("j=%d,k=%d",j,k);return 0;}




解析:

遇到这样有宏定义的题一般就是将宏定义展开,product(i++)=i++*i++; i =3,所以j等于9,此时i已经累加为5.

product(++i)要求先对i进行累加,这样累加后i等于7。

答案:9,49


面试题3:如果有 int a=5,b=3;执行 !a&&b++后a和b的值都是多少

解析:

这是表达式运算问题。因为!a运算结束后,表达式的值一定为假,那么&&后面的表达式不会再进行计算了。

结果:5,3