| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7621 人关注过本帖
标题:若有定义int x,y;并已正确给变量赋值,则下列选项与表达式(x-y)?(x++) ...
只看楼主 加入收藏
heliang6291
Rank: 2
等 级:论坛游民
威 望:3
帖 子:27
专家分:45
注 册:2012-6-28
收藏
得分:2 
当然不是D
大家首先要明白 ?:条件选择的含义,其中?前面是指条件是否成立,也就是是否为真,如果真,则选择后面第一个,如果为假,则选择第二个。
我们再来看C与D的答案。
C与D其实是结果反了一反。其中C的选项实际是 X!=Y,而D选项是 X==Y,这2者似乎一样,但其实对于结果来说恰好相反。例如对于X=8 Y=3,则条件表达式中 (X-Y)?这个条件显然为真(表达式结果非0),与C的表达式X!=Y(显然成立)是一致的,而与D选项 X-Y==0 这显然不成立,为假。
2012-09-06 10:44
tjm
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2012-9-6
收藏
得分:2 
#include <stdio.h>

int main(int argc, char ** argv)
{
    int x,y;
    x = 1;
    y = 1;
    (x-y)?(x++):(y++);
    printf("x:%d y:%d\n", x, y);

    x = 1;
    y = 1;
    (x-y==0)?(x++):(y++);
    printf("x:%d y:%d\n", x, y);
   
    x = 1;
    y = 1;
    ((x-y>0||x-y<0))?(x++):(y++);
    printf("x:%d y:%d\n", x, y);
    return 0;
}
"test.c" [已转换] 21L, 293C 已写入
gcc test.c
./a.out
x:1 y:2
x:2 y:1
x:1 y:2

验证一下就知道啦,答案是C
2012-09-06 10:55
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
收藏
得分:2 
c
(x-y)!=(x-y==0)
2012-09-06 11:06
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
收藏
得分:2 
个人感觉选c,原题中的是x-y 结果为0输出y++;而d选项中x-y==0,如果x-y为0表达式的结果就为真,自然输出x++,不用疑惑,肯定答案错了

[ 本帖最后由 核晴核理 于 2012-9-6 15:59 编辑 ]
2012-09-06 11:39
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:2 
就是一道很绕人的题,我也感觉 c 是对的。d 应该正好是反的。
2012-09-06 23:08
夜叶
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:189
注 册:2011-5-7
收藏
得分:2 
应该是C  从?:语句的基本概念出发  就可以找出答案了  条件?语句1:语句2;  众所周知,当条件为真的时,执行语句1;为假时执行语句2;问题转化为判断x-y为真即x-y!=0,对比答案可知,C为正确.D正好相反,为错误.
2012-09-06 23:37
快速回复:若有定义int x,y;并已正确给变量赋值,则下列选项与表达式(x-y)?( ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015190 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved