有以下程序 #include main() { int i=1, j=3; printf("%d," ,i++ ); { int i=0; i+=j*2; printf("%d,%d," ,i,j ); } printf("%d,%d\n" ,i,j )

admin2019-04-24  40

问题 有以下程序
#include
main()
{
int i=1, j=3;
printf("%d," ,i++ );
{ int i=0;
i+=j*2;
printf("%d,%d," ,i,j );
}
printf("%d,%d\n" ,i,j );
}
程序运行后的输出结果是( )。

选项 A、1,6,3,2,3
B、1,6,3,1,3
C、1,6,3,6,3
D、1,7,3,2,3

答案A

解析 不同作用域内若定义有同名的局部变量,则在其中一个局部变量的作用域内,其他同名的局部变量会被"屏蔽",规则一般是作用域小的变量"屏蔽"作用域大的变量。在用{}引起来的复合语句块中,i值为6,输出结果为6,3,而在语句块外,i为2,输出结果为2,3,所以答案选A。
转载请注明原文地址:https://jikaoti.com/ti/1Jf0FFFM
0

最新回复(0)