标题:这个表达式麻烦解释一下~~~
只看楼主
coki
Rank: 1
等 级:新手上路
帖 子:9
专家分:7
注 册:2010-11-30
结帖率:100%
已结贴  问题点数:20 回复次数:6 
这个表达式麻烦解释一下~~~
麻烦哪位大虾帮帮忙啊~~~
这个程序:
#include<stdio.h>
main()
{
    int x,y,z,m,n;
    m=10;
    n=5;
    x=(--m==n++)?--m:++n;
    y=m++;
    z=n;
    printf("%d %d %d %d %d\n",x,y,z,m,n);
}
中的***?***:***表达式是什么意思啊?麻烦解释一下~~~
谢啦
搜索更多相关主题的帖子: 麻烦 表达 解释 
2010-12-19 20:49
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
得分:6 
是一个条件表达式。 相当于:if(--m==n++)
                           x=--m;
                           else   x=++n;
2010-12-19 20:57
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:7 
程序代码:
#include<stdio.h>
void main()
{
    int x,y,z,m,n;
    m=10;
    n=5;
    x=(--m==n++)?--m:++n;//n++  ++n  x接受++n的返回值  x就是7了 n就是7了 
    y=m++;//执行了一次--m  y接受m++的返回值所以y是9
    z=n;//z==n==7
    printf("%d %d %d %d %d\n",x,y,z,m,n);
}
其实这种问题  把++  --  这些东西当成是函数
返回值是整形的函数
具体是  前缀是先把数+1返回数+1
后缀是先把数保存 再把数+1 返回保存的那个数也就是没加1之前的值

                                         
===========深入<----------------->浅出============
2010-12-19 21:02
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
得分:7 
   x=(--m==n++)?--m:++n这就是传说中的c语言中唯一的三目运算,(以下资料来自百度)三目运算符
  <表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则求表达式2 的值并把它作为整个表达式1的值; 如果表达式1 的值为假, 则求表达式3 的值并把它作为整个表达式1的值.
  例:
  int a=2;
  int b=(a==2?2:5);
  输出b;
  这样的结果是b为2
  eg:
  int a=1,b=2,z;
  z=a>b?a:(a>b?a:b);
  cout<<"z:"<<z<<endl;
  这样输出的结果是:2
  eg:
  int a=1,b=2,z;
  z=a>b?a: a>b?a:b ;//去了括号
  cout<<"z:"<<z<<endl;
  这样的输出的结果是:2
  三目运算中执行方向依次为自左向右。

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-12-19 23:28
zdyzhang
Rank: 9Rank: 9Rank: 9
来 自:栖息地
等 级:蜘蛛侠
威 望:4
帖 子:2335
专家分:1227
注 册:2008-9-20
得分:0 
楼主该结贴了。

悲剧源于生活。
2010-12-19 23:32
coki
Rank: 1
等 级:新手上路
帖 子:9
专家分:7
注 册:2010-11-30
得分:0 
哈哈...明白啦,谢谢各位啊。
2010-12-20 10:53
li_danwang
Rank: 4
来 自:鄂州
等 级:业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
得分:0 
以下是引用A13433758072在2010-12-19 23:28:13的发言:

   x=(--m==n++)?--m:++n这就是传说中的c语言中唯一的三目运算,(以下资料来自百度)三目运算符
  <表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则求表达式2 的值并把它作为整个表达式1的值; 如果表达式1 的值为假, 则求表达式3 的值并把它作为整个表达式1的值.
  例:
  int a=2;
  int b=(a==2?2:5);
  输出b;
  这样的结果是b为2
  eg:
  int a=1,b=2,z;
  z=a>b?a:(a>b?a:b);
  cout<<"z:"< 三目运算中执行方向依次为自左向右。
三目运算从右边到左的

没事来C一下...   
2010-12-23 20:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-329332-1-1.html




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

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