注册 登录
编程论坛 C语言论坛

想问问这种fun套fun该怎么写啊

姓张名世离 发布于 2019-12-26 20:06, 1487 次点击
只有本站会员才能查看附件,请 登录
6 回复
#2
叶纤2019-12-26 21:40
你敲的结果是什么?我敲的是d
#3
姓张名世离2019-12-27 09:56
回复 2楼 叶纤
答案是d,但怎么理解啊
#4
rjsp2019-12-27 10:01
{ 1, 2, 3 }*2-1 = { 1, 3, 5 },返回 a[1],即 3
{ 1, 3, 5 }*2-3 = { -1, 3, 7 },返回 a[3],数组溢出是未定义行为
#5
纯蓝之刃2019-12-27 10:07
回复 4楼 rjsp
a[3]虽然是未定义行为,但是按照c标准,a[3]应该可读不可写,按照题中的操作,只是使用了读取的功能,应该不存在越界的问题,只是a[3]是随机的,题中也没有使用该值。
#6
姓张名世离2019-12-27 10:19
回复 4楼 rjsp
谢谢你的帮助。
#7
rjsp2019-12-27 10:26
以下是引用纯蓝之刃在2019-12-27 10:07:57的发言:

a[3]虽然是未定义行为,但是按照c标准,a[3]应该可读不可写,按照题中的操作,只是使用了读取的功能,应该不存在越界的问题,只是a[3]是随机的,题中也没有使用该值。
读取也不可以

对于 int a[3];
a[0], a[1], a[2] 可写,不可以读
当 a[0], a[1], a[2] 被赋值后,可读也可写
a[0], a[1], a[2], a[3] 可取地址

规则就是 a. 没初始化或赋值之前,不可读
         b. 数组最后一个元素的后一个元素,不可以读写,但可取地址
1