四川王氏家谱字辈大全:C语言的 谁能帮帮我?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/07 17:37:00
#include<stdio.h>
main()
{int a=3,b=2,c=1;
c-=++b;
b*=a+c;
{int b=5,c=12;
c/=b*2;
a-=c;
printf("%d,%d,%d,",a,b,c);
a+=--c;
}
printf("%d,%d,%d,",a,b,c);
}
输出的结果是什么啊 答案给的是2,5,1和2,3,-2后面的2,3,-2我不知道怎么得出的 大家帮帮忙 谢了!

{int a=3,b=2,c=1;
c-=++b;
b*=a+c;
这个时候a=3,b=3,c=-2

{int b=5,c=12;
c/=b*2;
a-=c;
printf("%d,%d,%d,",a,b,c);
a+=--c;
}

这里括号内除了使a改变了,外面的b和c都没影响,a这个时候是2,a+=--c由于--c是0所以对a无影响

最后是2,3,-2

好好看看变量作用域那一块内容。
{}里面定义的变量只在{}里面有效,里面没有定义的变量就会往上一层的{}找
这样理解就很简单了,
第一个printf,a是外面定义的,b、c都是{}里面定义的,
外面的printf,a、b、c又编程使用最初定义的变量了。

{int a=3,b=2,c=1;
c-=++b;
b*=a+c;
这个时候a=3,b=3,c=-2

{int b=5,c=12;
c/=b*2;
a-=c;
printf("%d,%d,%d,",a,b,c);
a+=--c;
}

{int a=3,b=2,c=1;
c-=++b;
b*=a+c; /*a=3,b=3,c=-2*/

{int b=5,c=12;
c/=b*2; /*c=1*/
a-=c; /*a=2*/
printf("%d,%d,%d,",a,b,c);这里输出的是2。5。1。
a+=--c;
}
这里括号内除了使a改变了,外面的b和c都没影响,a这个时候是2,a+=--c由于--c是0所以对a无影响

printf("%d,%d,%d,",a,b,c);
}
这里好像是还有一个作用域的问题,
一个局域大一点,
一个局域小了一点,
就出现了一种误区,

我来跟你分析分析啊!
第一:…………………………
第二:…………………………
第三:…………………………
第四:…………………………

明白了吧!