当我们编译并运行以下C程序片段时,将会发生什么?
#include "stdio.h"
int main()
{
int a = 10;
int b = 15;
printf("=%d",(a+1),(b=a+2));
printf(" %d=",b);
return 0;
}
(A) = 11 15 =
(B) = 11 12 =
(C)由于第一个printf()中的(b = a + 2)而引起的编译器错误。
(D)没有编译错误,但输出将为= 11 X =,其中X将取决于编译器的实现。答案: (B)
说明:根据C标准C11,对printf()的所有参数进行评估,无论它们是否被打印。这就是为什么(b = a + 2)也将被求值,并且在第一个printf()之后b的值将为12的原因。这就是为什么正确答案是B。
这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。