单选题
1、第67题 (1.0分) 题号:584 设有说明:char w;int x;float y;double z;则表达式w*x+z-y 值的数据类型为()。
A
float
B
char
C
int
D
double
答案解析
正确答案:D
解析:
这道题考查的是 C 语言中**算术运算时的自动类型转换(隐式类型转换)**规则。
### 核心知识点:类型提升规则
在 C 语言中,当不同数据类型的变量进行混合运算时,编译器会自动将较低精度的类型转换为较高精度的类型,以保证运算精度不丢失。转换的一般顺序(由低到高)如下:
`char/short` -> `int` -> `unsigned int` -> `long` -> `unsigned long` -> `float` -> `double`
简记口诀:**“小转大”**,即所有参与运算的操作数最终都会向精度最高的那个类型看齐。
### 逐步推导过程
表达式为:`w * x + z - y`
我们需要按照运算符的优先级和结合性逐步分析:
1. **第一步:计算 `w * x`**
* `w` 是 `char` 型,`x` 是 `int` 型。
* 根据规则,`char` 会先提升为 `int`。
* `int` * `int` 的结果仍然是 **`int`** 型。
2. **第二步:计算 `(w * x) + z`**
* 上一步的结果是 `int` 型,`z` 是 `double` 型。
* 根据规则,`int` 会提升为 `double`。
* `double` + `double` 的结果是 **`double`** 型。
3. **第三步:计算 `((w * x) + z) - y`**
* 上一步的结果是 `double` 型,`y` 是 `float` 型。
* 根据规则,`float` 会提升为 `double`(注意:在大多数现代 C 标准实现中,float 参与运算时通常也会先转为 double 进行计算,或者至少结果精度取决于最高精度类型)。
* `double` - `double` 的结果是 **`double`** 型。
### 结论
整个表达式中,精度最高的类型是 `double`(由变量 `z` 引入)。因此,最终表达式的值的数据类型为 `double`。
故正确答案是 **D**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第192题 (1.0分) 题号:138 以下程序的输出结果是()。
单选题
1、第191题 (1.0分) 题号:641 若有说明:int a[10];则对a数组元素的正确引用是()。
单选题
1、第190题 (1.0分) 题号:696 设 int b=2;表达式(b>>2)/(b>>1)的值是()。
单选题
1、第189题 (1.0分) 题号:724 若调用fputc函数输出字符成功,则其返回值是()。
单选题
1、第188题 (1.0分) 题号:159 下列程序的输出为()。
单选题
1、第187题 (1.0分) 题号:722 利用 fseek 函数可以实现的操作是()。
单选题
1、第186题 (1.0分) 题号:576 设以下变量均为int类型,则值不等于7的表达式是()。
单选题
1、第185题 (1.0分) 题号:142 以下程序的输出结果为()。
单选题
1、第184题 (1.0分) 题号:559 一个算法应该具有”确定性”等5个特性,下面对另外4个特性的描述 中错误的是()。
单选题
1、第183题 (1.0分) 题号:152 以下程序的运行结果是()。
