This question already has answers here:
Why are these constructs using pre and post-increment undefined behavior?
(14个回答)
6年前关闭。
在gcc上的输出是4 4。
请解释此输出
(14个回答)
6年前关闭。
#include<stdio.h>
int main()
{
int i=2;
printf("%d %d\n",++i,++i);
return 0;
}
在gcc上的输出是4 4。
请解释此输出
最佳答案
这是未定义的行为。 C参数未定义功能参数的评估顺序。
相关章节:C99第6.5.2.2节第10段
功能指示符的评估顺序,实际
参数,而实际参数中的子表达式是
未指定,但实际调用之前有一个序列点。
同样在C99第6.5.2.2节第10段中
功能评估后有一个顺序点
标识符和实际参数,但在实际调用之前。每一个
调用函数中的求值(包括其他函数调用)
在此之前或之后没有特别排序的
执行被调用函数的主体是不确定的
相对于被调用函数的执行进行排序(94)
关于c - C中带前缀运算符的未定义输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17737885/