有以下程序#include<stdio.h> Main() { int a=1,b=2,c=3,d=0; if(a= =1 &&b++= =2) if(b!=2 || c--!=

2025-01-19 19:23:41
推荐回答(2个)
回答1:

源程序:

#include
main()
{ int a=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2 || c--!=3)
printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
}

输出: 1,3,3

【分析】
if(a==1&&b++==2) */ a==1 正确,b++==2,自增运算级在判断符前,又因为是b++而不是++b,所以判断时b为2,判断结果为正确,判断结束,b自增为3。进入下一个if /*

if(b!=2 || c--!=3) */ 此时b已经是3,所以b!=2,正确,由于是 ||(或),前面正确,就不用判断后面,所以进入 printf("%d,%d,%d\n",a,b,c);时,c依旧是3 /*

所以输出:1,3,3

回答2:

#include
main()
{ int a=1,b=2,c=3,d=0;
if(a= =1 &&b++= =2)
if(b!=2 || c--!=3)
???