【发布时间】:2021-07-18 07:20:14
【问题描述】:
代码:
#include <stdio.h>
int main()
{
int i = 3;
printf("%d %d %d %d %d\n",i = 7,--i,i = 18, i+5, i = 0);
printf("%d %d %d %d %d\n",i = 7,i--,i = 18, i+5, i = 0);
return 0;
}
输出:
7 7 7 5 7
7 18 7 5 7
为什么我会得到这个输出,谁能向我解释一下printf 语句中的这些表达式是如何执行的?
我的意思是,编译器按什么顺序考虑?
【问题讨论】:
-
我的意思是编译器考虑 printf 语句中的这些表达式的顺序 -- 没有定义的顺序。函数参数可以在 C++ 中以任何顺序求值。但是你为什么还要考虑写这样的代码呢?
-
是否依赖于编译器到编译器?
-
它可以取决于用于构建代码的不同编译器选项,而不仅仅是不同的编译器。不要写这样的代码,这是底线。
-
另外,请标记一种语言。 C 和 C++ 是两种不同的语言。
-
这是一个真正的常见骗局
标签: c printf stdio postfix-operator prefix-operator