相关疑难解决方法(0)

在C99中,f()+ g()未定义或仅仅未指定?

我以前认为在C99中,即使函数的副作用fg干扰,虽然表达式f() + g()不包含序列点,f并且g会包含一些,所以行为将是未指定的:要么f()之前调用f()之前的g()或g().

我不再那么肯定了.如果编译器内联函数(即使未声明函数,编译器可能决定这样做inline)然后重新排序指令,该怎么办?可能有人得到上述两种不同的结果吗?换句话说,这是未定义的行为吗?

这不是因为我打算写这种东西,而是在静态分析器中为这样的语句选择最佳标签.

c c99 undefined-behavior sequence-points unspecified-behavior

54
推荐指数
2
解决办法
1436
查看次数