单选题
10.以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5));
A
2
B
3
C
5
D
语法错误
答案解析
正确答案:A
解析:
这道题考查的是 C 语言中**逗号运算符**与**函数参数分隔符**的区别。
### 核心考点解析
在 C 语言中,逗号 `,` 有两种主要用途:
1. **作为参数分隔符**:在函数调用 `func(arg1, arg2)` 中,逗号用于分隔不同的实参。
2. **作为逗号运算符**:在表达式 `(expr1, expr2)` 中,逗号是一个运算符,它会先计算左边的表达式,再计算右边的表达式,整个表达式的值是**最后一个表达式的值**。
### 具体分析
题目中的函数调用语句为:
```c
func((e1,e2),(e3,e4,e5));
```
我们需要分析括号内的结构来确定实参的个数:
1. **第一个实参**:`(e1,e2)`
* 这里最外层的括号是函数参数列表的一部分。
* 内部的 `e1,e2` 被包裹在一对圆括号中,构成了一个**逗号表达式**。
* 根据逗号运算符的规则,`(e1,e2)` 整体被视为**一个**表达式,其值为 `e2` 的值。
* 因此,这是第 **1** 个实参。
2. **第二个实参**:`(e3,e4,e5)`
* 同样,内部的 `e3,e4,e5` 被包裹在一对圆括号中,构成了一个**逗号表达式**。
* 该表达式依次计算 e3、e4、e5,整个表达式的值为 `e5` 的值。
* 因此,这是第 **2** 个实参。
3. **参数分隔**
* 连接这两个部分的是中间那个没有被内部括号包裹的逗号。这个逗号才是**函数参数的分隔符**。
### 结论
该函数调用实际上等价于:
```c
func(e2, e5);
```
它传递了 **2** 个实参。
* 如果写成 `func(e1, e2, e3, e4, e5)`,则是 5 个实参。
* 但题目中通过括号将逗号组合成了表达式,改变了优先級。
因此,实参个数为 2。
**正确答案是:A**
题目纠错
c语言选择判断题库
相关题目
单选题
1、下列字符序列中,不可用作C语言标识符的是()。
单选题
1、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
单选题
1、已知字母a的ASCII十进制代码为97,则执行下列语句后的输出结果为()。char a='a'; a--; printf(”%d,%c\n”,a+'2'-'0',a+'3'-'0');
单选题
1、对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是()。
单选题
1、若有说明:int a[10];则对a数组元素的正确引用是()。
单选题
1、以下数据中,不正确的数值或字符常量是()。
单选题
9.以下数组定义中不正确的是()。
单选题
8.设有 int x=11; 则表达式 (x++ * 1/3) 的值是()。
单选题
3.以下数据中,不正确的数值或字符常量是()。
单选题
1、第300题 (1.0分) 题号:516 static char str[10]=“China”;数组元素个数为()。
