逗号运算符是做什么的?什么是,经营者用C呢?
4 回答
慕仙森
TA贡献1827条经验 获得超7个赞
表达方式:
(expression1, expression2)
首先计算expression1,然后计算expression2,并为整个表达式返回expression2的值。
哆啦的时光机
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
添加回答
举报
0/150
提交
取消