单选题
1、执行下列语句后,a和b的值分别为()。 int a,b; a=1+'a'; b=2+7%-4-'A';
A
-63,-64
B
98,-60
C
1,-60
D
79,78
答案解析
正确答案:B
解析:
这道题主要考察 C/C++ 语言中字符常量与整数的运算、ASCII 码值以及运算符优先级和结合性的知识。
### 1. 基础知识准备
在 ASCII 编码表中:
- 字符 `'a'` 的十进制值为 **97**。
- 字符 `'A'` 的十进制值为 **65**。
### 2. 逐步推导
**第一步:计算 `a` 的值**
语句:`a = 1 + 'a';`
1. 将字符 `'a'` 转换为其对应的 ASCII 整数值:97。
2. 执行加法运算:$1 + 97 = 98$。
3. 赋值给 `a`,所以 **`a = 98`**。
**第二步:计算 `b` 的值**
语句:`b = 2 + 7 % -4 - 'A';`
这里涉及三个运算符:`+`(加法)、`%`(取模/求余)、`-`(减法)。
根据 C/C++ 运算符优先级:
- `%`(取模)的优先级高于 `+` 和 `-`。
- `+` 和 `-` 优先级相同,结合性为从左到右。
因此,表达式的计算顺序如下:
1. **先计算取模运算 `7 % -4`**:
- 在 C/C++ 中,取模运算结果的符号与被除数(左操作数)相同。
- $7 \div (-4) = -1$ ... 余 $3$。
- 或者理解为:$7 = (-4) \times (-1) + 3$。
- 所以,`7 % -4` 的结果是 **3**。
- *注意:有些初学者可能会误以为结果是 -3 或 -1,但在 C 语言标准中,`a % b` 的结果符号同 `a`。即 $7 \% -4 = 3$。*
2. **代入原表达式**:
- 原式变为:`b = 2 + 3 - 'A';`
3. **从左到右计算加减法**:
- 先算 `2 + 3`,结果为 **5**。
- 再算 `5 - 'A'`。
- 将 `'A'` 转换为 ASCII 值 65。
- 计算 $5 - 65 = -60$。
- 赋值给 `b`,所以 **`b = -60`**。
### 3. 最终结果
- `a` 的值为 **98**
- `b` 的值为 **-60**
对比选项:
A. -63, -64
B. 98, -60
C. 1, -60
D. 79, 78
故正确答案为 **B**。
题目纠错
c语言选择判断题库
相关题目
单选题
5.C语言中的文件的存储方式有()。
单选题
4.C语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为()。
单选题
3.数组名作为实参数传递给函数时,数组名被处理为()。
单选题
2.经下列语句定义后,sizeof( ),sizeof( ),sizeof( ),sizeof( )在 微机上的值分别为()。 char x=65; float y=7.3; int a=100; double b=4.5;
单选题
1.设有以下语句, 若0<k<4,下列选项中对字符串的非法引用是()。 char str[4][2]={“aaa”,”bbb”,”ccc”,”ddd”},*strp[4]; int j; for (j=0;j<4;j++) strp[j]=str[j];
