
第一句:int a=4,b=3;
这一句声明了两个整型变量a和b,并给它们赋值a=4,b=3。
第二句:printf("%d\n",(--a==b++)?a++:b+1);
这是一个输出语句,是以整型数字格式输出一个值,这个值是表达式 (--a==b++)?a++:b+1的运算结果。
(--a==b++)?a++:b+1 叫问号表达式,它由三个表达式,表达式1是 --a==b++,表达式2是a++,表达式3是b+1。
表达式1是逻辑表达式,它判断--a与b++是否相等,因为a=4,--a是先自减,其值是3,b++是后自增,先提出b的原值(3)参与比较,然后再自增成为4,所以此处参与比较的b++的值是3,二者相等成立,整个问号表达式的值就等于表达式2的值。
表达式2的值是a++,也是后自增,即此处先取得a的原值(3),后面a再自增为4,就跟本句无关了。故表达式2的值为3。
最后得到的问号表达式的结果是3,就是输出3。
所以选项B是正确的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)