后面的逗号意义是什么意义?

C语言中逗号表达式存在的意义是什么? - 知乎61被浏览12394分享邀请回答for (int i = 0, j = SIZE - 1; i & j; ++ i, -- j) {
如果没有逗号表达式,那这个就不好写了3613 条评论分享收藏感谢收起for (int i = 0, j = SIZE - 1; i & ++ i, -- j) {
不过这里不写逗号表达式也可以写成 ++ i - -- j 也可以达到同样的效果当然 ++ i - -- j 这样写有些做作,因为明显这里根本不需要求那个差但是 ++ i, -- j 这种写法,逗号表达式的值(--j)其实也没用上这里要求的是i得到自加j得到自减这两个副效应而没有用到逗号表达式的值表达式求值可能有两个效应,其一是得到表达式的值,其二是,某些表达式还有副效应,例如,i = 1 这个表达式它本身的值为1,副效应是使i被赋值为1有些情况,则必须写逗号表达式譬如,要求连续输入某个变量的值,一旦这个值为0则停止这里需要判断变量的值是否为0但判断之前你必须输入这就只能用逗号表达式了while( scanf("%d",&i) , i != 0 ){}这里的,是一个序点含义是必须先完成前面的求值(scanf("%d",&i) 的求值,但这里其实我们要的是给i赋值的副效应,scanf("%d",&i)这个表达式的值是没有用的 ),然后再进行右面的求值所以,逗号表达式尽管只用到最后一个值,但很可能最后一个值依赖于前面求值引起的副效应这就是为什么要写前面子表达式的原因,也是逗号表达式的真正意义不少垃圾书上可能会举类似下面的例子求 3,4 表达式的值这样的逗号表达式当然没用因为前面的子表达式 3 根本没有副效应所以除非有病,在实际编程中根本不可能写这样的表达式 这样的垃圾例子确实会让不少人感到疑惑就是不明白逗号表达式的真正用法至于前面有网友提到的if ( a & b )tmp = a, a = b, b =//节省了一对大括号我认为是一种拙劣的风格117 条评论分享收藏感谢收起查看更多回答常用标点符号用法含义_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
常用标点符号用法含义
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(38d9b793f122439a-ua98).
重新安装浏览器,或使用别的浏览器

我要回帖

更多关于 五线谱中的逗号意义 的文章

 

随机推荐