| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3119 人关注过本帖
标题:求教逗号运算问题
只看楼主 加入收藏
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 2楼 kin3z
你说的,我都知道,可问题不出在这儿。
2017-02-20 13:13
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 3楼 九转星河
二级里面的题目,倒不是专门这么写,┑( ̄Д  ̄)┍
2017-02-20 13:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
以下是引用夜风缘在2017-2-20 13:12:29的发言:

很遗憾告诉你,a=20,这个我很确定,我只是举个例子说明,对这个结果并不怀疑。
#include <stdio.h>

int main( void )
{
    int a;
    int b = ( a=3*5, a*4, a+5 );

    printf( "表达式的值 = %d\n", b ); // 输出 20
    printf( "a的值 = %d\n", a ); // 输出 15

    return 0;
}
2017-02-20 13:20
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:2 
a*4的值没有赋给任何变量。
,号运算是每个语句都运行一下而已。我觉得可以看成有返回的函数。返回最后的语句的运算值。
楼主的意思是这样的
程序代码:
#include<stdio.h>
main()
{
   int x,y,z,a;
   x=y=1;
    a=(z=x++,y++,++y);
   

   printf("%d,%d,%d\n",x,y,a);
}



[此贴子已经被作者于2017-2-20 13:27编辑过]


我是硬件工程师
2017-02-20 13:25
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:2 
答案等于2 3 1不是很明确吗?逗号是一个顺序点,逗号保证副作用在逗号之前全部发生。

z=x++
这里的两个副作用,在进入Y++的时候,全部发生,z=1,x自增到2,Y自增两次。不管作为后缀还是前缀,y的两次自增,逗号都保证了在进入下一语句的时候一定发生完成。


[此贴子已经被作者于2017-2-20 13:45编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-02-20 13:38
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
所以……我就尽量少用逗号~多用分号~感觉逗号坑太多了……~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-20 14:26
纯帅de肥猪
Rank: 2
等 级:论坛游民
威 望:3
帖 子:9
专家分:10
注 册:2016-3-4
收藏
得分:2 
回复 10楼 夜风缘
楼主确定是20吗?怎么我的结果是15呢?
2017-02-20 14:56
纯帅de肥猪
Rank: 2
等 级:论坛游民
威 望:3
帖 子:9
专家分:10
注 册:2016-3-4
收藏
得分:0 
   z=x++,y++,++y;把这个运算过程改变一下方式,也许就清晰了。
1,z=x;    //z=1,
2,x++;    //x=2
3,y++;    //y=2
4,++y    //y=3
上面四个步骤下来,就是逗号运算符的运算过程
2017-02-20 14:59
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
或许是我表达有问题,我的意思是这个表达式的值为20,而不是a,我们最后输出的式还是表达式的值。等下,我明白你们的意思了,我前面说的还是错了,跟变量没关系,程序最终输出的是z的值,而不是表达式,z的值只跟第一个表达式有关,而整个式子的值是取最后一个表达式的值,最终输出哪个得看后面的变量。我终于明白了,谢谢解答的各位。
2017-02-20 17:15
夜风缘
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2017-2-16
收藏
得分:0 
回复 13楼 rjsp
其实是我理解错了你的意思,的确是表达式的值是20,a值是15
2017-02-20 17:19
快速回复:求教逗号运算问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.619911 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved