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

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

热度:213   发布时间:2007-04-04 20:20:30.0
以下是引用福尔摩斯在2007-4-4 20:17:32的发言:

我姐姐的机子没编译软件

我也看不了

要我发个给你吗???
----------------解决方案--------------------------------------------------------
#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);
}
要不你把程序变动一下..
c=(a=c<x)&&(b=y<z);
弄来看看结果...可以不
----------------解决方案--------------------------------------------------------
结果a,b,c 都等于1.
----------------解决方案--------------------------------------------------------

本论坛 knocker(老K)的回答是:&&操作符只有当其前面的表达式不为0时才执行后面的表达式

||这样的话前面正确就不执行后面


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

本论坛 knocker(老K)的回答是:&&操作符只有当其前面的表达式不为0时才执行后面的表达式

||这样的话前面正确就不执行后面



#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);
}
knocker(老K)果然是大虾。。。我验证过了。果然是那样。。。

在次谢谢 福尔摩斯 和 老K。。特别是福尔摩斯的热心帮助。。。

----------------解决方案--------------------------------------------------------
以下是引用mxn在2007-4-4 20:09:40的发言:
b真的是6。
不信你自己运行这段程序试试。。

看来楼主还需要努力 啊
&& 前面的表达式不为0时才会去执行后面的表达式
前面为0 后面就不需执行了 b的值也就不会变拉


----------------解决方案--------------------------------------------------------
后面没看 问题以解决了啊 呵呵
----------------解决方案--------------------------------------------------------
以下是引用mxn在2007-4-4 20:31:47的发言:
结果a,b,c 都等于1.
  正好验证咯k老大的回答....
   
   怎么我就没想到呢???
----------------解决方案--------------------------------------------------------
a=c&gt;x  这个式子的值为0,所以复职给a,a当然等于0.由于运算符&amp;&amp;只有左边的表达式为真的时候给进行后面表达式的运算.这里前面表达式为假,也就是0.所以后面表达式不做运算.所以b当然是不变的拉.所以a=0,b=6,c=0
----------------解决方案--------------------------------------------------------
c=(a=c>x)&&(b=y>z);
首先,我们先考虑 (a=c>x) 这个成立不成立,c=1,a=5,x=2;c>x,不成立,那么c>x的值为0,即a=0.在c语言中如果"&&"运算符前面的值为0那么就不回再求"&&"后面的值.而整"&&"运算的值为0.这时,c=0.由于没有在求b=y>z的值所以b的值不变是6.最后a=0,b=6,c=0.
----------------解决方案--------------------------------------------------------
  相关解决方案