C |操作员|问题6

以下程序的输出是什么?

null

#include <stdio.h>
int foo( int * a, int * b)
{
int sum = *a + *b;
*b = *a;
return *a = sum - *b;
}
int main()
{
int i = 0, j = 1, k = 2, l;
l = i++ || foo(&j, &k);
printf ( "%d %d %d %d" , i, j, k, l);
return 0;
}


(A) 1 2 1 1 (B) 1 1 2 1 (C) 1 2 2 1 (D) 1 2 2 2 答复: (A) 说明: 只有当第一个表达式导致FALSE时,逻辑OR中的控件才会转到第二个表达式。调用函数foo()是因为 我++ 将i的值递增为1后返回0(增量后)。foo()函数实际上交换两个变量的值,并返回第二个参数的值。所以,变量j和k的值被交换,或者表达式的计算结果为真。 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享