以下代码是否调用 UB?
以下代码是否调用 UB ?
int main(){
volatile int i = 0;
volatile int* p = &i;
int j = ++i * *p;
}
Does the following code invoke UB ?
int main(){
volatile int i = 0;
volatile int* p = &i;
int j = ++i * *p;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的 - 可以首先评估 ++i 或 *p(即 i)。
Yes - either ++i or *p (which is i) can be evaluated first.
是的,这是未定义的行为,因为您试图违反第二条规则。
注意:
*
运算符的操作数的求值顺序是未指定,而*p
只不过是我。
Yes that is Undefined Behavior because you are trying to violate the second rule..
Note: The order of evaluation of the operands of
*
operator is unspecified and*p
is nothing buti
.