某C语言程序中,x是一个浮点型变量,m是一个值为正整数整型常量,表达式x%m(x被m除取余数)在( )时会报错,这是一种(请作答此空)错误。
- A.词法
- B.语法
- C.语义
- D.运行
正确答案及解析
正确答案
C
解析
程序代码中错误可分为语法错误和语义错误。程序语言语法表述是语言形式,或者说是语言样子和结构。程序语言还有更重要一个方面,就是附着于语言结构上语义。语义揭示了程序本身含义、施加于语言结构上限制或者要执行动作。程序语言语义分为静态语义和动态语义。编译时进行是静态语义分析,主要包括:检查语言结构语义是否正确,即是否结构正确句子所表示意思也合法;执行规定语义动作,如表达式求值、符号表填写、中间代码生成等。整除取余运算符“%”有效运算对象是两个整数。在形式上,只要“%”两个运算对象存在,其语法就是正确;在语义上,“%”运算对象中有浮点数则不符合整除取余运算含义。因此,这是运算对象与运算符类型不匹配错误,届于静态语义错误,在编译阶段可以发现该错误。