问题
单项选择题
下面的C程序代码段在运行中会出现______错误。
int i=0;
while(i<10);
i=i+1;
A.语法
B.类型不匹配
C.变量定义
D.动态语义
答案
参考答案:D
解析:这道题实际上是考while的循环体和空语句。若while的循环体只有一条语句,则可以不用花括号括起来,如果有多条就要用花括号括起来,表示这几条语句合起来是while的循环体。空语句指的是只有一个分号的语句“;”,该语句什么事都不做。
程序语言中的错误一般分为语法错误、逻辑错误。语法错误指的是语句违反了形式规定而造成的错误,在这种情况下,不能通过编译而运行,编译器一般会给出错误信息并指出错误所在的行;逻辑错误指的是程序含义上的错误,出现了逻辑混乱。逻辑错误经常在运行中才体现出来,称为动态语义错误。
从题中“while(i<10);”可看出,while用一条空语句做循环体,没有循环终止条件,因此进入死循环,这是一种运行中出现的逻辑错误,为动态语义错误。题中将赋值语句“i=i+1;”用花括号括起来,引诱考生误将“{i=i+1;)”看成while的循环体,这其实是“烟幕弹”。