若有以下程序段: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a'; 则数值为3的表达式是( )。
时间: 2023-10-04 07:12:52 浏览: 97
根据题目,已知数组 `int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};` 和字符变量 `char c = 'a';`。则数值为 3 的表达式是 `a[2]`。
数组 `a` 中,下标从 0 开始,因此 `a[2]` 表示数组中第 3 个元素的值,即为 3。
而字符变量 `c` 的 ASCII 码值为 97,不等于 3。
因此,数值为 3 的表达式是 `a[2]`。
相关问题
设有带参数的宏定义: #define F(x,y) x>y?x:y 则执行下列程序段: int a=2,b=5,c; c=4+F(a,b); 后,c的值是_______。
根据宏定义`#define F(x,y) x>y?x:y`,在执行`c=4+F(a,b);`语句时,先将宏展开,即将`F(a,b)`替换为`a>b?a:b`,得到以下语句:
```c
c = 4 + a > b ? a : b;
```
由于运算符优先级,先进行`a>b`的比较,得到结果为`false`,即0。因此,上述语句等价于:
```c
c = 4 + b;
```
将b的值代入即可得到c的值:
```c
c = 4 + 5;
```
因此,c的值为9。
以下程序段的输出结果是()。 int a[6]={2,4,42,-2,5,90},*p1[4]={a,a+2},(*p2)[6]=&a; printf("%d,%d\n",*(*(p1+1)+1),(*(*p2+1)));
根据定义语句,a是一个包含6个元素的int型数组,p1是一个指针数组,包含4个元素,每个元素都是一个int型指针,分别指向a[0]、a[2]、a[0]、a[2]四个元素。
而p2是一个指向数组a的指针,指向a的首地址,即&a[0]。
执行语句“*(*(p1+1)+1)”时,首先p1+1指向p1数组的第二个元素,即a+2,然后再对其解引用,得到指向a[2]元素的指针,再对其加1,即指向a[3]元素,最后再解引用,即得到a[3]的值为-2。
执行语句“(*(*p2+1))”时,首先p2解引用,得到数组a的首地址&a[0],再加上1,即指向a[1]元素,最后再解引用,即得到a[1]的值为4。
因此,该程序段的输出结果为“-2, 4”。
阅读全文