c语言问题求帮助
#include <stdio.h>
void main ()
{
int x = 4, y;
y = x < 0 ? x++ : x--;
printf("%d %d\n" ,x, y); //3 4
}
结果是: 3 4
输出的y值为什么是4?怎么得来的啊?
[解决办法]
x不小于0,所以执行 y = x--;
x先赋值给y,然后自减1
所以y = 4, x = 3;
如果是--x,那么就是x先自减1,再赋值。。。
[解决办法]
先判断x不小于0,执行y=x--;
先把x=4赋值给y,x再自减1;
y=4,x=3
[解决办法]
来自y=x这句,而x=4,所以相当于y=x=4
[解决办法]
LZ是不明白--x 和想x--的区别
--x 意思是x先减1,再使用x的值
x-- 意思是先使用x的值,再减1
1个例子
int x = 3;
int y = 0;
int z = 0;
y = x--; //y = 3;(先使用x的值)
x = 3; //恢复x的原值
z = --x; //z = 2;(x先减1,再使用x的值)
[解决办法]
因为是x是后增,所以会先将表达式的值:x--赋给y,然后在修改x本身的值。(如果是先增就不一样了。)
[解决办法]
第一个三目运算符
相当于 if(x<0)
y = x++;
else
y = x--;
这样你就看得懂了3
[解决办法]
x-- x先赋值给y 然后x再减1