c语言自增自减应用

发布时间:2024-06-01 17:06 发布:上海旅游网

问题描述:

1:在一部分C系统中,++的作用会即时生效,也就是说,例如在(j++)+(j++)+(j++) 中,在执行了第一个j++后,j值会增一,所以在第二个j++时,j值就不再是原来的1而是2了,

2:在另一部分C系统中,三个j++中的j值是相同的,都是1
main()
{int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
应该用第1种方向做还是第2种方法用,为什么

问题解答:

我用的是VC++6.0
它是第一种效果

他这是告诉你
C语言运行得环境不同
结果会不同

你这个程序在不同环境下运行结果就不同
而不是说函数得关系
呵呵

这告诉你j++和++j的区别,++j先执行完整个语句再加一,j++先自身加一,在执行语句

(j++)+(j++)+(j++) 这个是C语言经典的二义性语句,你说的两种答案没有错对...可以说都对...

因为在电脑里面算式是用树的形式表示的,至于你所用的系统会生成什么样子的树...这个问题比较的无解,尽量不要写这样的语句就是了...

如果想深入了解,可以参考一下机械工业出版社的<编译原理>..

热点新闻