零基础学习c语言中逗号的使用

 1.在赋值语句中:

  多个表达式之间用逗号分隔,则以此计算各个表达式的值,并将最后一个表达式的结果赋值给a

如下:

int a = 0, b = 1;
a = (b++, b + 1); //最终a = 3,b = 2

  如果不加括号

int a = 0, b = 1;
a = b++ ,b + 1;

 则会被看成两个表达式,把b++的值赋值给a,然后执行b+1(并不会对b的结果进行修改)

  如果变量声明时如下

int a = 1,2,3,4;

逗号的优先级低于赋值符号,在此处2,3,4会被编译器视为未定义的变量或符号,大多数情况下会导致编译失败.

加上括号之后则会把4赋值给a(合法)

int a = (1,2,3,4);

2.在for循环语句中:

int arr[i] = {0};
for(int i = 0, j = 10; i < j; i++, j--)
{
    arr[i] = i;
}

  在此类语句中,逗号可以用来同时执行多个操作

for( ;a <= 9,b <= 5,a <=11; )

  以上表达式实际条件为a<=11,前两个表达式会被执行但结果被忽略 

3.在函数中使用

int add(int x, int y)
{
	return x + y;
}
	
int main()
{
    int a = 1, b = 2, c = 3;
	int ret = add((a, b), c);
    printf("%d", ret);
}

函数参数分别为(b,c)即(2,3),最终打印5。

4.宏定义中的使用

#define L(x) (printf("Value: %d\n",x),x)
int main()
{
	int result = L(42);
	printf("%d", result);
}

根据宏定义的使用规则L(42)被替换为(printf("Value: %d\n",42),42)

执行第一个语句时调用了printf函数,并把第二个表达式的结果42(第一个表达式的结果为10,表示printf函数成功打印的字符个数)返回给了result.因此在打印printf的之的时候输出42。

 总结:1.一般在需要表达式的地方(例如赋值)逗号大多作为运算符。

            2. 逗号运算符优先级较低,通常最后执行

            3.如果逗号在一个括号中,则更有可能被当作逗号表达式使用

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值