一个C语言问题 void main() {int i.j; i=8,j=10; printf("%d%d%d%d",i.j,++i,j++); } 结果是多少 最重

作者&投稿:冶俊 (若有异议请与网页底部的电邮联系)
void main(){ int i,j,m,n;i=8;j=10;m=i++;n=j++;printf("%d,%d,%d,%d",i,j,m,n); 求输出结果?~

没加头文件,加上
#include 就OK 了
#include

void main()
{
int i,j,m,n;i=8;j=10;m=i++;n=j++;
printf("%d,%d,%d,%d",i,j,m,n);

i=8,j=10;
printf("%d,%d,%d,%d",i,j,++i,j++);
}

这个一般编译器是从右往左计算,并且后++不起作用。

这种方法很有危险,实际应用中应避免这种写法。现在的教育制度就是这样,非得研究那些没有实际意义的牛角尖问题…… 却不多花点时间学习有用的……

加号在左边表示先加再用,右边表示先用再加。所以++i是9,j++是10(但是如果这次输完后再输出j的话就是11了)

结果是
9 11 9 10
GCC编译的规则是,printf()从右往左解析。

8,10,9,10

8,10,9,10 注意寄存器变量的问题。