C语言 int 类型变量赋值与运算:正确表达式解析
已知 int a = 'R';则正确的表达式是 ()
A、a%10 B、a=int(3e2) C、2*a=a++ D、a=a+a=a+3
正确答案:B、a=int(3e2)
解析:
- A、a%10:该表达式计算的是 a 除以 10 的余数。由于 a 的值是字符 'R',在 C 语言中,字符会被自动转换为其 ASCII 码,因此 a%10 的结果取决于 'R' 的 ASCII 码,而不是一个确定的值。
- B、a=int(3e2):该表达式将 3e2(科学计数法表示的 300)转换为 int 类型,并赋值给 a。这个表达式是合法的,可以正确执行。
- C、2*a=a++:该表达式是非法的,因为在 C 语言中,不能将赋值运算符的左侧作为左值(lvalue)。左值必须是一个可以被修改的变量或内存地址。
- D、a=a+a=a+3:该表达式是非法的,因为赋值运算符的优先级低于加法运算符。表达式会先执行 a + a 和 a + 3,然后将结果分别赋值给 a。由于 a 的值在每次赋值后都会改变,因此最终结果是不确定的。
总结:
只有 B 选项是合法的表达式。其他选项都存在语法或语义错误。
原文地址: https://www.cveoy.top/t/topic/n4X6 著作权归作者所有。请勿转载和采集!