设变量 a,b 和 ch 已正确定义并赋初值,则以下叙述中错误的是 A)语句 ch=(unsigned int) a+b;是对 a 与 b 之和进行强制类型转换,结果赋值给变量 ch B)运算符%的运算对象只能是整数类型 C)逗号表达式的值是最后一个表达式的运算结果 D)复合运算:a*=b+ch 是将变量 b、ch 之和与 a 相乘,结果再给a 赋值
在C语言中,强制类型转换的格式是 (类型名) 表达式。在选项A中,表达式 ch=(unsigned int) a+b; 实际上是对变量 a 进行了 (unsigned int) 的强制类型转换,然后将转换后的无符号整型数与 b 相加,最后的结果赋值给 ch。但是,这里有一个常见的误解,即强制类型转换只作用于紧随其后的表达式,即只转换 a,而不包括 b。因此,如果 b 的类型不是无符号整型,那么这个表达式实际上会先进行 a 的类型转换,然后与 b 的值按照 b 的原始类型进行加法运算。
(类型名) 表达式
ch=(unsigned int) a+b;
a
(unsigned int)
b
ch
A) 语句 ch=(unsigned int) a+b; 是对 a 与 b 之和进行强制类型转换,结果赋值给变量 ch
这个描述是不准确的。实际上,这个语句只对 a 进行了 (unsigned int) 类型的强制类型转换,然后这个转换后的值(无符号整型)与 b(其原始类型,可能是整型、浮点型等)相加。最后,这个相加的结果(可能根据 b 的类型进行隐式类型转换)被赋值给 ch。如果 ch 的类型与相加结果的类型不匹配,可能还会发生进一步的隐式类型转换。因此,这个选项的描述是错误的。
答案:A
用户登录可进行刷题及查看答案
登录后提交答案