为了账号安全,请及时绑定邮箱和手机立即绑定

逗号运算符是做什么的?

逗号运算符是做什么的?

米脂 2019-05-25 16:01:43
逗号运算符是做什么的?什么是,经营者用C呢?
查看完整描述

4 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

表达方式:

(expression1,  expression2)

首先计算expression1,然后计算expression2,并为整个表达式返回expression2的值。


查看完整回答
反对 回复 2019-05-25
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

逗号操作将评估左操作数,丢弃的结果,然后计算右边的操作数,这将是这个结果。链接中提到的惯用法是在初始化for循环中使用的变量时,它给出了以下示例:

void rev(char *s, size_t len){
  char *first;
  for ( first = s, s += len - 1; s >= first; --s)
      /*^^^^^^^^^^^^^^^^^^^^^^^*/ 
      putchar(*s);}

否则,不会有太多伟大的用途逗号操作符,虽然它很容易被滥用来生成代码是难以阅读和维护。

草案C99标准来看,语法如下:

expression:
  assignment-expression
  expression , assignment-expression

第2段说:

逗号运算符左操作数被计算为void表达式; 评估后有一个序列点。然后评估右操作数; 结果有它的类型和价值。 97)如果尝试修改逗号运算符的结果或在下一个序列点之后访问它,则行为未定义。

脚注97说:

逗号运算符不会产生左值

这意味着您无法分配逗号运算符的结果。

重要的是要注意逗号运算符具有最低优先级,因此有些情况下使用()可以产生很大的不同,例如:

#include <stdio.h>int main(){
    int x, y ;

    x = 1, 2 ;
    y = (3,4) ;

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

将有以下输出:

1 4


查看完整回答
反对 回复 2019-05-25
  • 4 回答
  • 0 关注
  • 1101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信