牛客网刷题笔记

本文探讨了C++编程中常见的陷阱,包括未定义行为的例子、死循环的原因及如何避免,同时还解释了标签语句的用途和静态变量的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序出错在什么阶段

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()第二个参数以数组形式传递

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值