当前位置: 代码迷 >> C语言 >> [求助]关于?:的算法
  详细解决方案

[求助]关于?:的算法

热度:247   发布时间:2007-06-09 11:47:20.0
对了,有一点不明白,我只知道PRINTF是从右往左算的,还有什么语句是从右往左算的,谢,
我学了一段时间的C,但有些东西还是不太只知道
----------------解决方案--------------------------------------------------------
而算术运算就是从=号开始从左往右算了
能就用?:举个例子吗?

----------------解决方案--------------------------------------------------------
printf("%d",n=(y=4?y:(y/=2)));
执行的过程是:
y = 4;
if( y != 0)
n = y;
else
{
y /= 2;
n = y;
}
printf("%d", n);

----------------解决方案--------------------------------------------------------

13楼结果写的不错,可是这样写不太好,我认为还是这样写不错的
#include "stdio.h"

main()
{
int n;
int y=4;

if (y=4)
n=y;
else
y=y/2;


printf("结果是%d\n", y);
getch();



}
我个人认为如果IF学的好,就可以不学这橙皮


----------------解决方案--------------------------------------------------------
以下是引用我是菜鸟哦在2007-6-9 10:41:23的发言:

#include <stdio.h>
main()
{
int n;
int y=4;

printf("%d",n=(y==4?y:(y/=2)));//是条件语句,用 == 而不是 =
}
这个?:不是从右向左吗?怎么还是输出4.help!!!!!!



----------------解决方案--------------------------------------------------------
?: 在嵌套的形式下其执行顺序是从右往左,在上面的程序里printf只是单一输出的n值,不存在从右往左的顺序,而对于?:的程序执行顺序,13楼给的herbert描述的已经很清楚了
----------------解决方案--------------------------------------------------------

其实就是条件语句的简单写法,条件语句当然要先检测条件。


----------------解决方案--------------------------------------------------------
  相关解决方案