有以下程序 #include <stdio.h> main() { int a=0,b=0,c=0,d=0; (a++ && b++) : c++ : d++; printf("%d,%d,%d,%d\n", a,b,c,d); } 程序的

admin2020-11-27  30

问题 有以下程序
#include <stdio.h>
main()
{  int  a=0,b=0,c=0,d=0;
   (a++ && b++) : c++ : d++;
   printf("%d,%d,%d,%d\n", a,b,c,d);
}
程序的运行结果是

选项 A、1,0,0,1
B、1,1,0,1
C、1,0,1,0
D、1,1,1,0

答案A

解析 自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1。条件运算符"?",执行规则为: 若exp1为真,求解exp2,输出exp2的值,不计算exp3的值;若为假,求解exp3,输出exp3的值,不计算exp2的值。"&&"逻辑与表达式:exp1&&exp2。规则为,对exp1求值,若为0,则表达式为0,且不计算exp2;若exp1非0,则求exp2值,作为表达式值。题目中a++先取值为0,则(a++ && b++)为0,且不计算b++与c++,而计算d++,并把这个值作为整个表达式的值输出,然后a与d自加1,最后得到a=1,b=0,c=0,d=1。A选项正确。
转载请注明原文地址:https://jikaoti.com/ti/v7D0FFFM
0

最新回复(0)