C / C ++中的逗号运算符问题?

C / C ++编程语言中的逗号运算符具有两个上下文-

  • 作为分隔符-

  • 作为运算符-逗号运算符{,}是二进制运算符,它丢弃第一个表达式(求值后),然后使用第二个表达式的值。该运算符的优先级最低。

请看以下代码并猜测输出-

示例

#include <stdio.h>
int main(void) {
   char ch = 'a', 'b', 'c';
   printf("%c", ch);
   return 0;
}

输出结果

因为作为分隔符,所以它给出一个错误。

prog.c: In function ‘main’:
prog.c:5:20: error: expected identifier or ‘(’ before 'b'
char ch = 'a', 'b', 'c';
^~~

示例

#include <stdio.h>
int main(void) {
   char ch;
   ch = 'a','b','c';
   printf("%c", ch);
   return 0;
}

输出结果

它提供了一个作为输出,因为它的工作原理,因为“”可以作为运算符,但它的优先级低于赋值运算符因此输出是一个。

a

示例

#include <stdio.h>
int f1() {
   return 43;
}
int f2() {
   return 123 ;
}
int main(void) {
   int a;
   a = (f1() , f2());
   printf("%d", a);
   return 0;
}

输出结果

它以','作为输出,给出123作为输出,并用花括号将其工作并计算第二个表达式并给出输出。

123