程序出错在什么阶段
int main(void) {
http://www.taobao.com
cout << "welcome to taobao" << endl;
}
程序正常执行:
原因:双斜杠之后的www.youkuaiyun.com被当做注释了,前面的http:这就是C++中一个几乎不会被用到的语法,标签
带标签的语句是一种特殊的语句,在语句前面有一个标识符(即标签,上段代码中的http)和一个冒号。使用goto label就可以跳到标签处执行,比如可以在代码中写goto http,这样就会执行cout语句了。
case就是一种标签,case关键字和它对应的值一起,称为case标签。
类中的public、private、protect也是标签,称为成员访问标签。
设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是
n=0;while(ch=getchar()!='\n')n++;
n=0;while(getchar()!='\n')n++;
for(n=0;getchar()!='\n';n++);
n=0;for(ch=getchar();ch!='\n';n++); // x
原因:对于for循环,其初始条件只执行一次,因此ch只从输入流中取一个字符,之后就再不会取字符,会造成死循环
下列 C 代码中,不属于未定义行为的有__
int i=0;i=(i++);
char *p=”hello”;p[1]=’E’;
char *p=”hello”;char ch=*p++; // √
int i=0;printf(“%d%d\n”,i++,i--);
都是未定义行为
都不是未定义行为
未定义行为
C语言标准未做规定的行为,这些行为由编译器自行处理,在不同的编译器可能会产生不同的结果,又或者如果程序调用未定义的行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至是在另一个日期运行失败。当一个未定义行为的实例发生时,正如语言标准所说,“什么事情都可能发生”,也许什么都没有发生。
静态变量static在不同的实例中地址是否一样?他们储存在什么区域?
地址一样,在全局区。
语句var arr=[a,b,c,d];执行后,数组arr中每项都是一个整数,下面得到其中最大整数语句正确的是哪几项?
Math.max(arr) // x
Math.max(arr[0], arr[1], arr[2], arr[3])
Math.max.call(Math, arr[0], arr[1], arr[2], arr[3])
Math.max.apply(Math,arr)
解析:
Math.max(args…)传入参数是任意数量的值
Function.call()可以传入任意多个参数
Function.apply()第二个参数以数组形式传递