c语言中的逗号运算符与逗号表达式

什么是逗号运算符?
  1. 定义:c语言提供的一种特殊运算符,用于连接两个表达式
  2. 示例:
1+2,2+3
什么是逗号表达式?
  1. 定义:使用逗号运算符连接的多个表达式即为逗号表达式
  2. 格式:表达式1,表达式2,表达式3
  3. 示例:结果为5
(1+2,2+3)
  1. 逗号表达式的值:整个逗号表达式的值为最右边的表达式的值,如示例中的表达式2:
    2 + 3 = 5
  2. 逗号表达式的计算方法:
    • 从左到右逐个计算
    • 逗号表达式作为一个整体,它的值为最后一个表达式的值
    • 逗号运算符在所有运算符的优先级中最低
示例一:
a = 1*2,a*3;

容易产生的误解为:"1 * 2,a * 3"为一个逗号表达式,原来 a 的值为2,a * 3后将6赋值给a,最终a的值为6
正确分析:逗号运算符的优先级最低,所以应该先进行赋值运算,a = 1 * 2 = 2,然后进行a * 3 = 6的运算操作,也就是最终a的值为2,但是整个逗号表达式的结果为6

示例二:
#include
void main()
{
  int a;
  printf("%d\n",(a=3*5,a*4,a+5));

结果为: 20
计算的过程为:对于逗号表达式,从左往右进行计算,赋值运算a = 15,然后计算a * 4 = 60,再者计算a + 5 = 20,20作为这个逗号表达式的最终结果打印出来

示例三:
a = (a=1,a*2);
b = a =1,a*3;

第一个表达式为一个赋值表达式,将逗号表达式的结果赋值给a;第二个表达式为逗号表达式,包括一个赋值表达式和算数表达式,表达式的最终结果为3,b = 1

注意:
  1. 逗号并不是都是作为逗号运算符,如:函数间的参数也是使用逗号作为分隔符
printf("%d,%d,%d\n",a,b,c); 结果为:a,b,c
printf("%d,%d,%d\n",(a,b,c),b,c); 结果为:c,b,c
  1. 使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于for循环语句中
for(int i = 2, j = 4; i , j; i--, j--)
{
  printf("%d,%d\n",i,j);
}

循环的终止条件为:j = 0

你可能感兴趣的:(c语言中的逗号运算符与逗号表达式)