选择并分析正确答案是如何得到的?

来源:百度知道 编辑:UC知道 时间:2024/06/21 16:24:27
如下程序
#include <stdio.h>
void main()
{ int m, a, b;
a=1;
b=1;
m=0;
m=a++||b++;
printf("\n%d %d %d\n", a,b,m);
} 运行的结果为:()(选择1项)
A) 1 1 0 B) 2 1 1 C) 2 2 1 D) 1 0 1

选择B
m=a++||b++看似是先执行a||b,并将值赋给m(m=1),然后再分别执行a++和b++。但经过编译器编译以后,根据||(逻辑或)运算特征,只要判断a为真(即值为1),就不再判断b了,所以不会再执行b++了。这与通常情况下C/C++的语法好像不相容,其实是C/C++语法编译成机器语言是有微小差异的。

所以结果是m=1 a=2 b=1

B
a++后,a=2,为真,不执行b++了,所以b还是1,m为真即为1