void main(){
int i=10;
int j=5;
int k=0;
k = MAN(i++,++j);
printf("%d %d %d ", i, j, k);
}
有人能解释一下如何评估答案吗? MAN是一个函数。我想知道如何评估参数的顺序。我得到答案为12 6 11。
答案 0 :(得分:2)
请注意,操作员,序列点和评估顺序是相当基本的事情,所有这些都应该被您用来学习该语言的书籍或文档所涵盖。
postincrement运算符(变量名后面的++
)将增加变量的值并计算前一个值。换句话说,如果i
的值为10
,则i++
将评估为10
,而i
将具有11
的新值}。
preincrement运算符(变量名前的++
)将增加变量的值并计算新值。换句话说,如果j
的值为5
,那么++j
将评估为6
和j
,其新值为6
正如您所说,MAN()
是代码中的函数,而不是类似函数的宏,那么您声明的12 6 11
结果是不可能的,因为您从i=10
开始,然后i++
为i
提供11
的值,因此当您将其传递给printf()
时,根本无法从中获取12
。因此,MAN()
必须是类似函数的宏,它至少会对其中一个参数进行求值。
请提供您的代码正在使用的MAN()
的实际定义。