请教高手们一个c语言问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:07:46
已知字符“A”的ASCII值为65,以下程序运行后的输出结果是?
void main()
{
int x=30,y=50,t=4;
char z='A';
if(y>x+2&&y<z-12)
x=y;
y=t;
if(y<z&&y>z-20)
t=x;
x=y;
y=t;
printf("%d,%d,%d\n",x,y,z);
}

输出结果:4,4,65

void main()
{
int x=30,y=50,t=4;
char z='A';
if(y>x+2&&y<z-12)真
x=y;
y=t;
if(y<z&&y>z-20)假//这里y值是4;x:50
t=x;//只有这句不执行
x=y;//x:4 y:4
y=t;//
printf("%d,%d,%d\n",x,y,z);
}

if(y>x+2&&y<z-12)
x=y;
y=t;
if为真 此步过后 x=50,y=4,z=65,t=4;
if(y<z&&y>z-20)
t=x;
x=y;
y=t;
if为真 此步过后 x=4,y=50,t=50,z=65;
所以 结果为“4,50,65”

嗯,结果4,4,65
实际上程序的实际效果应该是这样的。

void main()
{
int x=30,y=50,t=4;
char z='A';
if(y>x+2&&y<z-12)
{
x=y;
}
y=t;
if(y<z&&y>z-20)
{
t=x;
}
x=y;
y=t;
printf("%d,%d,%d\n",x,y,z);
}

其实if里的不管是真是假,只影响到他下面 一行 代码的执行与否。
因为你的if判断后的语句没有加括号,编译器默认只有它下面的一行是if 为真是要执行的代码,或者为假时不执行的代码。

4,4,65