当前位置: 代码迷 >> C语言 >> 就快考级了,有道题目不会,请大家帮帮忙。。。感激不尽。。。(已解决。)
  详细解决方案

就快考级了,有道题目不会,请大家帮帮忙。。。感激不尽。。。(已解决。)

热度:76   发布时间:2007-04-04 19:50:38.0

我用TC试过。B真的是显示6啊。。。。


----------------解决方案--------------------------------------------------------

顶起。。。。


----------------解决方案--------------------------------------------------------
c的结果是0 把...




----------------解决方案--------------------------------------------------------
以下是引用mxn在2007-4-4 19:44:03的发言:

嘻嘻。。不好意思。。误解了。。。
还有一道啊。。。

#include "stdio.h"
main()
{
int a=5,b=6,c=1,x=2,y=3,z=4;
c=(a=c>x)&&(b=y>z);
printf("%d,%d,%d",a,b,c);
}
这里B为什么是6,而a却是0啊???


这句是错的, b=0 才对, c=0,a=0


int a=5,b=6,c=1,x=2,y=3,z=4;
c=(a=c>x)&&(b=y>z);

你所说的有错!


首先,我们先考虑 (a=c>x) 这个成立不成立

在C语言中的等号是赋值运算,从右到左,而不是数学上的等号概念( == 是C语言的等号)

而且在C语言中,判断语句成立,那么这个式子为 1(真),注意是实实在在的数值等 1,比如 100>1 这个式子的结果就是 1!

c=1,a=5,x=2;c>x,不成立,所以结果就是 0,然后 0 再赋值给 a,所以 a=0

(b=y>z)

b=6,y=3,z=4;

y>z,不成立,得0,赋值给b, b=0!

最后 c=0&&0 &&是且的关系,只要一个得0,结果必然为0

所以,显示结果应该是: 0,0,0


----------------解决方案--------------------------------------------------------
b真的是6。
不信你自己运行这段程序试试。。
----------------解决方案--------------------------------------------------------
顶一下

[此贴子已经被作者于2007-4-4 20:16:22编辑过]


----------------解决方案--------------------------------------------------------
以下是引用yjh8656在2007-4-4 20:10:19的发言:

他的程序里并没有判断a=0,b=0

‘=’号是赋值运算,不是判断运算(‘==’才是判断运算)


----------------解决方案--------------------------------------------------------
哎..我的电脑上没tc拉
朋友你再看看代码是不是全和你tc里的一样啊..??
按理是结果 为3个0 啊
----------------解决方案--------------------------------------------------------

以下是引用星梦缘在2007-4-4 20:15:55的发言:
哎..我的电脑上没tc拉
朋友你再看看代码是不是全和你tc里的一样啊..??
按理是结果 为3个0 啊

我姐姐的机子没编译软件

我也看不了


----------------解决方案--------------------------------------------------------
以下是引用福尔摩斯在2007-4-4 20:14:19的发言:

他的程序里并没有判断a=0,b=0

‘=’号是赋值运算,不是判断运算(‘==’才是判断运算)

恩 我想错了 但是我运行了一下 结果是 0 6 0 顶一下
----------------解决方案--------------------------------------------------------

  相关解决方案