首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言有关问题求帮助

2013-07-16 
c语言问题求帮助#include stdio.hvoid main (){int x 4, yy x 0 ? x++ : x--printf(%d %d\n ,

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?怎么得来的啊?
[解决办法]

引用:
#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

引用:
#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?怎么得来的啊?

[解决办法]
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本身的值。(如果是先增就不一样了。)
[解决办法]
引用:
#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?怎么得来的啊?



第一个三目运算符

相当于 if(x<0)
          y = x++;
      else 
          y = x--;
这样你就看得懂了3  
[解决办法]
x--  x先赋值给y  然后x再减1

热点排行