printf函数入栈问题
已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序_____C__。
main()
{ char a=‘A’;
int b=20;
printf(“%d,%o”,(a=a+a,a+b,b),a+‘a’-‘A’,b);
}
A)表达式非法,输出零或不确定值
B)因输出项过多,无输出或输出不确定值
C)输出结果为20,141
D)输出结果为20,141,20
解析:a的值为130,超过char类型表达范围的值130的二进制为-126的补码;进栈顺序,在printf函数中,从右往左表达式的值入栈,右边式子先运算,于是%o对应的97转换成八进制为141(o)