当前位置: 代码迷 >> C语言 >> 解析一下这个程序
  详细解决方案

解析一下这个程序

热度:116   发布时间:2006-07-26 17:10:19.0
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-26 09:10:19
终极sl

等 级:新手上路
帖 子:15
专家分:0
注 册:2006-7-22
  得分:0 
以下是引用穆扬在2006-7-26 17:10:19的发言:

这个只有天知道
但这是合法的c语句
不能说它不对

哈,收到


----------------解决方案--------------------------------------------------------
++x&&++y&&++z;
这句的意思是当x自加变成0,由于&&的特性,当前面的值为假时,后面的也就不再执行了,因为&&是要两个值为真,才为真的,既然已经有一个是假的,就没必要再执行下面的++y&&++z,所以y与z没有进行自加运算(这个是经典哦~~“短路”)
----------------解决方案--------------------------------------------------------
10楼的兄弟说的有道理啊
----------------解决方案--------------------------------------------------------
以下是引用悲伤的小弃魂在2006-7-26 17:07:13的发言:
1.关于 x=y=z= -1;
赋值表达式本身也有值,表达式z=-1的值为-1,所以y的值也就为-1,同理,x的值也为-1。语法上分析,这句没有错。
2。关于++x&&++y&&++z; 和 ++x||++y||++z;
++x&&++y&&++z为逻辑表达式,加上 ;就是逻辑表达式语句吧,没有什么奇怪的。对于逻辑与的运算,当某一表达式被判为“0”时,便不往下执行。对于逻辑或的运算,当某一表达式被判为“非0”时,便不往下执行(真真为真,假假为假,因此没必要往下执行)。

带着这两点去分析就可以理解了吧

悲伤的小弃魂分析得很详细了,楼主真该好好的感谢他.
3.运算顺序++,&&,||。自己查资料看看运算顺序,这对你以后分析更复杂的语句很有帮助.

[此贴子已经被作者于2006-7-26 19:59:31编辑过]


----------------解决方案--------------------------------------------------------
谢谢大家!!
----------------解决方案--------------------------------------------------------
回复:(canon787)解析一下这个程序

1.关于 x=y=z= -1;
赋值表达式本身也有值,表达式z=-1的值为-1,所以y的值也就为-1,同理,x的值也为-1。语法上分析,这句没有错。
2。关于++x&&++y&&++z; 和 ++x||++y||++z;
++x&&++y&&++z为逻辑表达式,加上 ;就是逻辑表达式语句吧,没有什么奇怪的。对于逻辑与的运算,当某一表达式被判为“0”时,便不往下执行。对于逻辑或的运算,当某一表达式被判为“非0”时,便不往下执行(真真为真,假假为假,因此没必要往下执行)。


10楼的话非常有道理,谢谢10楼的见解,有收获啊,以后我看书要仔细啊


----------------解决方案--------------------------------------------------------
int x=y=z=-1;按语法来说是没有错。
不过有的编译器会报错。
例如win-tc的会报
未定义的符号'y'在main函数中
未定义的符号'z'在main函数中
VC++中允许。
----------------解决方案--------------------------------------------------------
以下是引用nuciewth在2006-7-27 15:42:17的发言:
int x=y=z=-1;按语法来说是没有错。
不过有的编译器会报错。
例如win-tc的会报
未定义的符号'y'在main函数中
未定义的符号'z'在main函数中
VC++中允许。

int x=y=z=-1按标准c语法来说是错的。
标准的c语法一律要求对变量先声明再使用,
int x,y,z;
x=y=z=-1;
这样才是对的。


----------------解决方案--------------------------------------------------------
以下是引用终极sl在2006-7-26 16:27:12的发言:
++x&&++y&&++z;

这个是什么意思
有什么目的

++x&&++y&&++z

应该是
(++x)&&(++y)&&(++z)
先分别计算++x,++y,++z的植进行与运算.

要区分
x++&&y++&&z++和++x&&++y&&++z之间的区别

x++&&y++&&z++,
其实质是
{
x&&y&&z;
x++;
y++;
z++
}


----------------解决方案--------------------------------------------------------
  相关解决方案