51Testing软件测试论坛
标题:
c语言
[打印本页]
作者:
hzlovewl
时间:
2008-8-1 20:14
标题:
c语言
C语言代码
#include "stdio.h"
main()
{
int x,y,z,a,b,c;
x=1;
y=2;
z=++x || ++y;
printf("x=%d\n",x);
printf("y=%d\n",y);
a=-1;b=-2;
c=++a && b++;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
为啥结果
y=2,b=-2呢?
作者:
hzlovewl
时间:
2008-8-1 20:24
标题:
c语言
C语言代码
#include "stdio.h"
main()
{
int x,y,z,a,b,c;
x=1;
y=2;
z=++x || ++y;
printf("x=%d\n",x);
printf("y=%d\n",y);
a=-1;b=-2;
c=++a && b++;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
为啥结果
y=2,b=-2呢?
作者:
daixing521
时间:
2008-8-1 22:27
标题:
回复 1# 的帖子
主要是逻辑运算是从左边开始运算,当判断++x为真时候。这里X为2,所以为真,只有当下x为0的时候为假,||(或运算)已经不需要判断后面的数了,因为或运算是只有2个为假的时候才为假。
下面的与运算也一样
这里主要的考虑到逻辑运算的结合性,或运算和与运算都是左结合!
作者:
heroing
时间:
2008-8-2 16:15
++x || ++y
++x为真
故不做++y计算
y还是2
同理得b=-2
建议楼主好好看看逻辑运算那部分
优先级
或与运算
作者:
jernifer
时间:
2008-8-2 18:01
同意上楼,||运算符的规则是,一真为真。
&运算符运算法则是,一假全假。
作者:
hzlovewl
时间:
2008-8-2 20:18
嗯,我已经明白了,谭浩强的书好像没说这个
作者:
hzlovewl
时间:
2008-8-2 20:21
哎···刚才翻了书,里面说了,我自己没注意看···谢谢各位了
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2