int x=0,y=0; while(x<15) y++,x+=++y; printf("%d,%d",y,x);

2025-02-28 07:45:46
推荐回答(5个)
回答1:

在真实的C标准中像y++和++y这样的运算是未定义的,和编译器有关系。
但一般认为y++会先使用y值再自加1,++y会先加1再使用y值;
第一次运算时,y++;此时y=1;
x+=++y;时是在y=1的基础上再加1;
所以x=2;

在真实的工作环境中是不允许出现类似x = ++y;或x = y++;这种形式的赋值的;
因为当编译环境不同时可能会出现不可预料的问题。

回答2:

y++会先使用y值再自加1,++y会先加1再使用y值;第一次运算时,y++;此时y=1;x+=++y;时是在y=1的基础上再加1;所以x=2.

回答3:

因为y++在逗号之后就变成1 了,++y,没有运行就变成1了所以x=0+2,x=2

回答4:

http://zhidao.baidu.com/question/44413947.html你看一下这个回答吧,关于逗号运算符,这里不是一个表达式,而是两个。

回答5:

看了那么多打印,都说y++后y=1,y不是先使用,在加吗?比如:printf(“%d”,y++),如果int y=0,他就输出0.不是应该先使用y=0,进行x+=++y,吗?x不是应该为1吗?答案为什么为2呢?