51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2867|回复: 6
打印 上一主题 下一主题

[讨论] c语言

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-8-1 20:14:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-8-1 20:24:15 | 只看该作者

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呢?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-8-1 22:27:30 | 只看该作者

回复 1# 的帖子

主要是逻辑运算是从左边开始运算,当判断++x为真时候。这里X为2,所以为真,只有当下x为0的时候为假,||(或运算)已经不需要判断后面的数了,因为或运算是只有2个为假的时候才为假。
下面的与运算也一样
这里主要的考虑到逻辑运算的结合性,或运算和与运算都是左结合!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-8-2 16:15:35 | 只看该作者
++x || ++y
++x为真
故不做++y计算
y还是2

同理得b=-2

建议楼主好好看看逻辑运算那部分
优先级
或与运算
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-8-2 18:01:33 | 只看该作者
同意上楼,||运算符的规则是,一真为真。
&运算符运算法则是,一假全假。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-8-2 20:18:50 | 只看该作者
嗯,我已经明白了,谭浩强的书好像没说这个
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-8-2 20:21:18 | 只看该作者
哎···刚才翻了书,里面说了,我自己没注意看···谢谢各位了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 01:40 , Processed in 0.073504 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表