以下程序的输出是什么?
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