C逗号表达式

在 C 语言中,逗号表达式(comma expression) 是一种允许你在一个表达式中串联多个子表达式的语法结构,它使用英文逗号 , 将多个表达式连接起来,并按顺序从左到右依次计算所有表达式的值,整个逗号表达式的结果是最后一个子表达式的值

✅ 语法形式:

表达式1, 表达式2, ..., 表达式n


🎯 关键特性:

  1. 从左到右依次求值

  2. 只有最后一个表达式的值会作为整个表达式的结果

  3. 常用于 for 循环、宏定义、复杂初始化或函数参数中。


📌 示例 1:基本使用

#include <stdio.h> 
int main() { 
int a; a = (1 + 2, 3 + 4); 
printf("%d\n", a); // 输出 7 
return 0; }

(1 + 2, 3 + 4) 中先计算 1 + 2,结果是 3(被忽略);
  • 再计算 3 + 4,结果是 7,赋值给 a


📌 示例 2:在 for 循环中

for (int i = 0, j = 10; i < j; i++, j--) 
{

 printf("i = %d, j = %d\n", i, j);

}

  • i++, j-- 是逗号表达式;

  • 每轮循环执行 i++j--,但整个表达式的值是 j-- 的结果(通常不被使用)。


📌 示例 3:宏定义中

#define SWAP(a, b) (temp = a, a = b, b = temp) 
int temp; 
int main() { 
int x = 5, y = 10; SWAP(x, y); 
printf("x = %d, y = %d\n", x, y); // x = 10, y = 5 
return 0; 
}

解释:

  • SWAP(a, b) 使用逗号表达式将多条操作压缩成一个表达式。


⚠️ 注意事项:

  • 逗号表达式和多个逗号分隔的变量不同,例如:

    int a, b, c; // 这是声明多个变量,不是逗号表达式。

  • 如果你用在函数参数中:

    foo((x = 1, x + 2)); // 只会传入 x + 2 的值,x = 1 仍会执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值