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

[100分送上]很迷惑的一句话:条件表达式不能取代一般的if语句?该怎么解决

2012-03-13 
[100分送上]很迷惑的一句话:条件表达式不能取代一般的if语句?今天在一本书上看到一句:条件表达式不能取代

[100分送上]很迷惑的一句话:条件表达式不能取代一般的if语句?
今天在一本书上看到一句:
条件表达式不能取代一般的if语句,仅当if语句中内嵌的语句为赋值语句时(且两个分支都给同一个变量赋值)才能替代if语句;
例如:
if(a%2==0)
printf( "even ");
else
printf( "odd ");
就不能写成:
(a%2==0)?printf( "even "):printf( "odd ");
--------------------------------------------
可是我用dev却明明可以运行~~

谁来解释哈?


[解决办法]
lz有才
[解决办法]
书上也就那么一说,也不是真理!

[解决办法]
倒是可以写printf((a%2==0)? "even ": "odd ");
[解决办法]
vc7 可以
[解决办法]
int a = 3;
int b = 0,c = 0;
scanf( "%d ",&a);

((a%2==0)?b:c) = 4;

printf( "b=%d, c=%d\n ",b,c);

[解决办法]
就不能写成:
(a%2==0)?printf( "even "):printf( "odd ");

用vc 是可以的!!
[解决办法]
#include "stdio.h "
#include "stdlib.h "

#define FMT(a) ((a)%2==0)?printf( "even "):printf( "odd ")

main()
{
FMT(2);
}

其实2个写法都对 只是楼主在理解方面出了点偏差,也怪作者没描叙清楚

[解决办法]
i wanna gain some marks please
[解决办法]

都是可以的

void main()
{
int a = 5;

// 1

if (a % 2 == 0)
printf( "even\n ");
else
printf( "odd\n ");


// 2

(a % 2 == 0) ? printf( "even\n ") : printf( "odd\n ");


// 3

printf((a % 2 == 0) ? "even\n " : "odd\n ");


}


[解决办法]
printf 的返回是 int,且两个都是 printf,所以没有违反 ?: 需要的条件。
[解决办法]
复值也是ok的

int a = 10;
int c = 0;
int d = 0;

(a % 2 == 0) ? c = a : d = a;

cout < <c < <endl < <d < <endl;
[解决办法]
回复人:Chiyer(星羽) ( 一星(中级)) 信誉:100 2007-07-26 18:38:34 得分:0
?
当然,不能取代3个分支以上的if了
============================================
() ? (() ? () : () ) : ()
[解决办法]
唉,不必钻牛角尖吧,实际使用中,方便用就行
[解决办法]
看语法图最清楚。
[解决办法]
中国SB写的书
[解决办法]
这种东西有什么好写进书里的,徒增误解。你不写进书里难道有人会用一堆?=代替if?

[解决办法]
不同的编译平台就可能有不同的规则~~不过觉得LZ那个好像有点不对劲

热点排行