[求助]两个小问题,高手赐教~~~~~~~~
#include <stdio.h>
int main()
{
int c,x,y;
x=0;
y=0;
c=0;
c=x++&&y++;
printf( "\n%d %d %d\n ",x,y,c);
}
这个程序为什么结果会是1 0 0
按理说x和y都应该是1,而是0才对啊
还有一个程序
#include <stdio.h>
int main()
{
int a=2,b=-1,c=2;
if (a <b)
if (b <0) c=0;
else c+=1;
printf( "%d\n ",c);
}
结果是2,为什么?
第二个if里的b <0是成立的呀,那么c怎么就等于2了呢??
[解决办法]
第一个 ,这个 依赖编译器的处理
第二个 else匹配的是if (b <0)这个if
所以结果是2
[解决办法]
第一个 短接,y++没有执行;
第二个 就近原则,else 与最近的if 匹配;
[解决办法]
rlj021正解。第一个是先算&&之前的部分,如果为0就不算后一部分了。
[解决办法]
后面的if-else是一对,因为a <b为否所以就直接跳到printf处执行了
[解决办法]
因为他先看x值等于0而你后面的是&&所以x++和y++都没必要执行了,如果你把&&的换成功之路||结果应该就不同了
[解决办法]
正确的缩进如下,一目了然:
#include <stdio.h>
main()
{
int a = 2, b = -1, c = 2;
if (a < b)
if (b < 0)
c = 0;
else
c += 1;
printf( "%d\n ", c);
}