c – 这是未定义的行为还是正常输出
发布时间:2020-12-16 10:35:25 所属栏目:百科 来源:网络整理
导读:这是一个非常简单的问题,但在序列点上甚至有一些疑问. int a[3] = {1,2,4};printf("%d",++a[1]); O / P 3 这是一个有效的c语句,我得到输出3,这意味着它是相同的 ++(a[1]) 但是这怎么可能,因为我们有一个预增量运算符,必??须先增加a,然后必须发生dereference.
这是一个非常简单的问题,但在序列点上甚至有一些疑问.
int a[3] = {1,2,4}; printf("%d",++a[1]); O / P 3 这是一个有效的c语句,我得到输出3,这意味着它是相同的 ++(a[1]) 但是这怎么可能,因为我们有一个预增量运算符,必??须先增加a,然后必须发生dereference. 请纠正我的疑问.我们如何获得3? 解决方法
你的括号是正确的,你认为应该发生的理由显然是错误的.
如果你是对的,并且前缀增量具有比索引更高的优先级,那么对于格式错误的代码,你会遇到编译器错误,试图增加数组. 原样,绝对没有机会导致UB的排序错误等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |