逗号表达式
2009-08-09 14:44
120 查看
逗号表达式
形式:表达式1,表达式2,表达式3,...,表达式n
例:
a=2*6,a-4,a+15;
当逗号作为运算符使用时是一个双目运算符,其运算优先级是所有运算符中最低的。逗号运算符的运算顺序是自左向右的,因此上述赋值语句的求值顺序为:先计算2*6并赋予a(结果是a=12),再计算a-4(只计算,不赋值),最后计算a+15(只计算,不赋值),最终以27作为整个逗号表达式的值。请注意,后面两个表达式的值仅作了计算,而并没有赋给a,所以a的值仍然为12。
有时候使用逗号表达式的目的仅仅是为了得到各个表达式的值,而并非要得到真个逗号表达式的值。
例:
t=a,a=b,b=t;
此逗号表达式的目的是实现变量a,b值互换,而不是使用整个表达式的值。
例:
由于逗号运算符的优先级最低,因此x=5+5,10+10与x=(5+5,10+10)的作用不同,前者是x被赋值为10,而整个逗号表达式的值为20;后者由于增加了一对括号 ,使10+10作为整个表达式的值并赋予变量x,因此x的值为20。
例:
逗号表达式(a=3*5,a*4),a+15 的运算顺序为:将3*5的结果15赋给变量a,再计算括号内的第二个表达式a*4的值,结果为60,该整数60虽然作为括号所构成的表达式的值,但是a的值仍然是15,因此最后计算a+15时,结果为30。
例:
int j=5;
a=(a=j+1,a+2,a+3);
该赋值语句的执行顺序为:先对a变量赋值6,再计算a+2得8,再计算a+3得9,最后将9作为整个逗号表达式的值付给变量a,使a重新赋值为9。如果将一对括号去掉,a的值为6。
例:
int x ,y;
y=(x=1,++x,x+2);
该赋值语句的执行顺序为:x被赋值为1,x自增1得2,再计算x+2得4,4作为整个逗号表达式的值付给变量y,因此y被赋值为4。
文章转自:http://www.vichx.com/post/c-2-4-3.html
形式:表达式1,表达式2,表达式3,...,表达式n
例:
a=2*6,a-4,a+15;
当逗号作为运算符使用时是一个双目运算符,其运算优先级是所有运算符中最低的。逗号运算符的运算顺序是自左向右的,因此上述赋值语句的求值顺序为:先计算2*6并赋予a(结果是a=12),再计算a-4(只计算,不赋值),最后计算a+15(只计算,不赋值),最终以27作为整个逗号表达式的值。请注意,后面两个表达式的值仅作了计算,而并没有赋给a,所以a的值仍然为12。
有时候使用逗号表达式的目的仅仅是为了得到各个表达式的值,而并非要得到真个逗号表达式的值。
例:
t=a,a=b,b=t;
此逗号表达式的目的是实现变量a,b值互换,而不是使用整个表达式的值。
例:
由于逗号运算符的优先级最低,因此x=5+5,10+10与x=(5+5,10+10)的作用不同,前者是x被赋值为10,而整个逗号表达式的值为20;后者由于增加了一对括号 ,使10+10作为整个表达式的值并赋予变量x,因此x的值为20。
例:
逗号表达式(a=3*5,a*4),a+15 的运算顺序为:将3*5的结果15赋给变量a,再计算括号内的第二个表达式a*4的值,结果为60,该整数60虽然作为括号所构成的表达式的值,但是a的值仍然是15,因此最后计算a+15时,结果为30。
例:
int j=5;
a=(a=j+1,a+2,a+3);
该赋值语句的执行顺序为:先对a变量赋值6,再计算a+2得8,再计算a+3得9,最后将9作为整个逗号表达式的值付给变量a,使a重新赋值为9。如果将一对括号去掉,a的值为6。
例:
int x ,y;
y=(x=1,++x,x+2);
该赋值语句的执行顺序为:x被赋值为1,x自增1得2,再计算x+2得4,4作为整个逗号表达式的值付给变量y,因此y被赋值为4。
文章转自:http://www.vichx.com/post/c-2-4-3.html
相关文章推荐
- C/C++中逗号表达式
- 逗号表达式
- LCC编译器的源程序分析(26)逗号表达式
- [转载]LCC编译器的源程序分析(26)逗号表达式
- for的死循环(逗号表达式)
- 逻辑表达式与逗号表达式
- Python正则表达式——去掉数字中的逗号
- c语言中有关逗号表达式
- C++逗号运算符与逗号表达式
- C/C++中逗号表达式
- 逗号表达式
- 内核代码中一个逗号表达式比较特别的用法
- C语言中逗号表达式
- 逗号表达式
- __thread, __typeof__与逗号表达式
- python正则表达式去掉数字中的逗号(python正则匹配逗号)
- 逗号表达式
- c语言 转义符 算术运算符及赋值运算符 复合运算符 逗号运算式和表达式 关系运算符 逻辑运算符
- 逗号表达式
- 一串字字符中多个逗号转换为一个,既标准分隔符(正则表达式)