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