最新要闻
- 营收创6年最大跌幅!苹果被曝裁员外包员工 库克最后手段?
- 时隔3年半漫威重返内地!《蚁人与黄蜂女:量子狂潮》今日上映
- 天天热头条丨《星际争霸2》世界冠军李培楠回国:黄旭东等为其接风
- 当前视讯!三亚3米长搁浅抹香鲸救治无效不幸死亡:或被鲨鱼咬伤
- 全球看热讯:干货分享丨店长管理的五大核心你抓住了吗!
- 当前要闻:没买车的等等党们:赢了
- 每日看点!男子购买1200元年货32天快递仍未送达 邮政客服:车还在路上
- 每日动态!注意!特斯拉宣布召回超36万辆车 会突然停车发生车祸:马斯克火速回应
- 环球新动态:iPadOS 16:拖后腿了
- 【环球报资讯】2023开年火药味儿十足 “大内存”机型卷出了新高度
- 男子卖出游戏账号后3次恶意找回 为何被判盗窃而不是诈骗?
- 世界热推荐:一年节省185亿度电!中车研制复合材料“超级铜”登上央视
- 魔兽国服重开遥遥无期 消息称暴雪找不到接盘方:能谈的都试了
- 每日播报!我想知道知乎现在是怎么了?
- 女子询问换杯 却被奈雪店员辱骂:拒绝出面道歉
- 即时看!70城新房价格指数时隔12个月首次止跌
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
把选择语句和重复语句视为块
(资料图)
把选择语句和重复语句视为块
问:在C99
中,为什么把选择语句和重复语句(以及它们的“内部”语句)视为块?
答:这条奇怪的规则来源于把复合字面量用于选择语句和重复语句时出现的一个问题。该问题与复合字面量的存储期限有关,所以我们先花点时间讨论一下这个问题。
C99
标准指出,如果复合字面量出现在函数体之外,那么复合字面量所表示的对象具有静态存储期限。否则,它具有自动存储期限,因而对象所占有的内存会在复合字面量所在块的末尾释放。
考虑下面的函数,该函数返回使用复合字面量创建的point
结构:
struct point create_point(int x, int y){ return (struct point) {x, y};}
这个函数可以正确工作,因为复合字面量创建的对象会在函数返回时被复制。原始的对象将不复存在,但副本会保留。现在假设我们对函数进行微小的改动:
struct point *create_point(int x, int y){ return &(struct point) {x, y};}
这一版本的create_point
函数会导致未定义的行为,因为它返回的指针所指向的对象具有自动存储期限,函数返回后该对象不复存在。现在回到开始时得到的问题:为什么把选择语句和重复语句视为块?考虑下面的例子:
/* Example 1 - if statement without braces */double *coefficients, value;if (polynomial_selected == 1) coefficients = (double[3]) {1.5, -3.0, 6.0};else coefficients = (double[3]) {4.5, 1.0, -3.5};value = evaluate_polynomial(coefficients);
这个程序片段显然能按需要的方式工作。coefficients
将指向由复合字面量创建的两个对象之一,并且该对象在调用evaluate_polynomial
时仍然存在。现在考虑一下,如果在内部语句(if
语句控制的语句)两边加上花括号,会有什么不同:
/* Example 2 - if statement with braces */double *coefficients, value;if (polynomial_selected == 1) { coefficients = (double[3]) {1.5, -3.0, 6.0};} else { coefficients = (double[3]) {4.5, 1.0, -3.5};}value = evaluate_polynomial(coefficients);
现在我们遇到问题了。每个复合字面量会创建一个对象,但是该对象只存在于包含相应语句的花括号所形成的块内。调用evaluate_polynomial
时,coefficients
指向一个不存在的对象,从而导到致未定义的行为。
C99
的创立者对这种现象很不满意,因为程序员不可能期望在if
语句中简单地增加花括号就会导致未定义的行为。为了避免这一问题,他们决定始终把内部语句视为一块。这样一来,示例1和示例2就等价了,都会导致未定义的行为。
当复合字面量是选择语句或重复语句的控制表达式的一部分时,类似的问题也会发生。因此,我们把整个选择语句和重复语句也都看作块(就好像有一对不可见的花括号在整个语句外面一样)。因此,带有else
子句的if
语句包含三个块:两个内部语句分别是一个块,整个if
语句又是一个块。
把选择语句和重复语句视为块
营收创6年最大跌幅!苹果被曝裁员外包员工 库克最后手段?
时隔3年半漫威重返内地!《蚁人与黄蜂女:量子狂潮》今日上映
天天热头条丨《星际争霸2》世界冠军李培楠回国:黄旭东等为其接风
当前视讯!三亚3米长搁浅抹香鲸救治无效不幸死亡:或被鲨鱼咬伤
全球看热讯:干货分享丨店长管理的五大核心你抓住了吗!
当前要闻:没买车的等等党们:赢了
每日看点!男子购买1200元年货32天快递仍未送达 邮政客服:车还在路上
每日动态!注意!特斯拉宣布召回超36万辆车 会突然停车发生车祸:马斯克火速回应
环球新动态:iPadOS 16:拖后腿了
读Java实战(第二版)笔记12_重构、测试和调试
【环球报资讯】2023开年火药味儿十足 “大内存”机型卷出了新高度
今日播报!期末复习——同步、互斥、死锁
男子卖出游戏账号后3次恶意找回 为何被判盗窃而不是诈骗?
世界热推荐:一年节省185亿度电!中车研制复合材料“超级铜”登上央视
魔兽国服重开遥遥无期 消息称暴雪找不到接盘方:能谈的都试了
每日播报!我想知道知乎现在是怎么了?
女子询问换杯 却被奈雪店员辱骂:拒绝出面道歉
即时看!70城新房价格指数时隔12个月首次止跌
全球观天下!苹果7喇叭灰尘怎么清理 苹果7喇叭灰尘清理的方法
世界微资讯!汉诺塔
观察:真正“搞”懂HTTPS协议19之HTTPS优化
pnpm的基本原理及快速使用
环球焦点!Windows 环境下安装与配置 Node.js
fusion app远程公告(微云)
全球微动态丨北京多个地铁口有人扫码送“大鹅”:小心隐私泄露
游戏《如龙7外传》夜店真人女郎上新:一大波日本纯美小姐姐
二叉树中某一值的路径之 先序遍历 + 二叉搜索树转化为循环双向链表 之 中序遍历
全球快播:设计模式(八)----创建型模式之建造者模式与工厂模式区别
【全球热闻】真实项目开发中高并发实战经验总结
环球讯息:Python 爬虫方法总结
刘德华剧透《流浪地球3》:"数字生命"延续
重点聚焦!被苹果踢出果链后淡化手机业务?欧菲光回应:指纹识别还是龙头地位
天天微头条丨Vue急速入门-3
Python多任务教程
每日短讯:数据结构刷题2023.02.16小记
全球今日讯!Xcode Swift自动格式化
环球观天下!反结账的钱退到哪里_反结账快捷键
豪掷7500万!ChatGPT开发商OpenAI买下极品域名AI.com
环球聚焦:为了搞死《霍格沃茨之遗》“黑巫师”们用尽了魔法
每日动态!【2023.02.16】威佐夫博弈详解
今日热闻!女子丽江60元买2串烧烤仅6只虫2只蝎 景区回应其吐槽:特色小吃贵
精准发力“二次元”群体:盈通推出“樱瞳水着”RTX 4080显卡
当前快讯:女子吃饭后疯狂打嗝 医生:赶紧转急诊
环球热推荐:全球只有18块!极品飞车特别版RTX 4090现身海鲜市场:要价1.6万
python处理xml文件
天天时讯:因衣服长时间放购物车被客服嘲讽 还被拉黑:遭无数网友吐槽
【热闻】交个朋友公司被曝欠薪、恶意裁员 罗永浩回应:第一时间协调妥善解决
每日快看:1099元 微星PRO MP161便携式显示屏来了:15.6寸IPS屏 仅重0.75kg
高速路上一觉醒来车在冒烟无人驾驶:副驾小伙慌忙跳车逃生
世界时讯:联想拯救者Y9000P 2023游戏本性能狂飙:满血RTX 4090、240Hz高刷
江西芦溪:田园春意浓 乡村美如画
记录--TS类型写不好?一起来训练提升吧!
判断一个给定数组是否为二叉搜索树后序遍历
防患未然 | AIRIOT城市管廊智能运维解决方案
全球今亮点!xcodebuild命令行工具使用详解
今日热文:欧洲2035禁售燃油车!专家:电动车难完全取代燃油车
环球焦点!Wind11新预览版25300发布:实时字幕对中国用户更加友好!
当前时讯:新日登北京电动自行车不合格“黑榜”:多批电池管理系统有问题
新消息丨不愧是玩无人机的 大疆车载产品矩阵揭秘:高阶辅助只需摄像头
这合理吗?公厕免费取纸先关注微信公众号
快资讯丨pip设置镜像
天天头条:String详解
世界时讯:开心档之Swift 访问控制
计算机导论学习记录(二)
全球微头条丨8个让你收入翻倍的高质量免费网站
重点聚焦!大疆Inspire 3无人机来了:配全画幅X9相机、可录8K视频
全球速递!用了电信5G 浙大完成中国首例5G超远程机器人肝胆手术:跨越近万里
总投资389亿!2023年第一条高铁获批:沿海超级通道定了
全球速讯:消息称腾讯XR团队全线解散:成立不到1年!
鄱阳湖旗舰店麻辣小龙虾官方大促:1.4 斤29.9元到手
深交所向新亚制程发出关注函
全球看点:USRP-2974上安装Ubuntu20.04 + UHD 3.15 + GNU Radio 3.8 过程全记录
VOP 消息仓库演进之路|如何设计一个亿级企业消息平台
【热闻】【管理您的整个软件供应链】上海道宁与Sonatype助力您以更安全的开源更快地交付产品
快看点丨西部数据推出22TB/44TB My Book桌面硬盘 售价高达1500美元
曝光交个朋友欠薪 当事人最新回应:罗永浩正积极联系公司解决
果粉买不?苹果折叠屏会先拿iPad试水!折叠iPhone风险太高了
当前热讯:想要过目不忘?进来学两招、保证不后悔!
世界热资讯!12.4万买帕纳梅拉梦碎 首单车主:保时捷傲慢 100万都不卖
环球视讯!OpenYurt v1.2 亮点速览丨云边流量峰值相比原生 K8s 降低 90%
全球百事通!堆叠柱状图怎么用?速戳!
火山引擎数智平台的这款产品,正在帮助 APP 提升用户活跃度
模型预处理层介绍(3) - IntegerLookup
CC1打不通时的另外一条链CC3
天天通讯!襄阳市消防救援训练与战勤保障大队成立
吴刚谈儿子出演《狂飙》高晓晨:既然选择这条路就要自己走
世界即时:尼泊尔载72人客机失事坠毁 初步调查报告:螺旋桨顺桨失去推力
环球信息:2023年铁路春运圆满收官:累计发送旅客3.48亿人次 增长37.4%
【天天速看料】博主分享特斯拉Model 3P一年使用成本:每公里不到4毛
卖手机壳收入百万:300多元的壳十分畅销
今热点:机器学习-随机森林
【世界独家】docker-compose搭建redis-Cluster集群
环球快资讯丨使用docker部署Python-Flask实现ChatGPT的使用
今日要闻!关于nfs服务启动messages日志中报错-Unable to watch /proc/fs/nfsd/clients: No such file
【世界聚看点】特斯拉不好惹!网红车评人“蔡老板”被判道歉赔10万后:还没饶了他
环球热点评!阿里一面:你做过哪些代码优化?来一个人人可以用的极品案例
天天微头条丨豆瓣仅4分!《三体》动画宣布延播两周:3月4日恢复
全球新消息丨等待16年!好莱坞8.1分末日科幻大片《我是传奇》续集定了:“史皇”出演
【时快讯】罗永浩交个朋友公司被曝欠薪 员工:遭到暴力裁员