A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑朝明 中级黑马   /  2013-1-17 20:35  /  1792 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ™郑老 于 2013-1-17 20:37 编辑

max=a>b?a:b;//这是什么东东谁帮我翻译成中文意思
max=a/b?a:b;//报错这是为什么
b=-a++;//程序是怎么计算这东东的(是先先++还是先-a再++)

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

6 个回复

倒序浏览
max=a>b?a:b
max的值是a和b比大小,谁大max的值就是谁
max=a/b?a:b;//没有这么写的,语法问题。
b=-a++;++的运算级别比-高,所以先执行a++,但是此时a的值没有变化,是运行后在自增1,下次调用a的返回值就是a+1.

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 ShowStyle 于 2013-1-17 20:56 编辑

max=a>b?a:b;//这个是三元表达式,意思就是:如果a>b成立,则将a赋值给max,否则将b赋值给max;
max=a/b?a:b;//报错这是为什么?因为你这个表达式是不正确的,max=(a/b)?a:b;  括号中的运算结果必须是布尔值,所以你这个是不成立的
b=-a++;//程序是怎么计算这东东的(是先先++还是先-a再++)这个问题,我也需要求解,等等我翻翻书,在告诉你

刚刚翻书了!++ ,--的优先级是最低的,=号还在++之前,所以你这个表达式里面的++是没效果的

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
1. max=a>b?a:b;//若a大于b为真,则将a的值赋值给变量max;若a大于b的值为假,则将b的值赋值给变量max;
2. max=a/b?a:b;//若a除以b的结果不为0,则将a的值赋值给变量max,若a除以b的值为0,则将b的值赋值给变量max;
3. b=-a++;//等价于b=b-a++;同时也等价于b=b-a;这里的++没起作用。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
三元运算符的前部分应该是关系运算符,max=a/b?a:b;是错误的   复合运算符包括:+=,-=,*=,/=,b+=a同b=b+a  其他类同

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
1. max=a>b?a:b;   
     赋值的优先级最低,所以先算后面的
    等同于max = (a>b?a:b)   三目运算符的计算     若a大于b为真,则将a的值赋值给变量max;若a大于b的值为假,则将b的值赋值给变量max;

2. max=a/b?a:b;、这个宝座的原因在于, 三目运算问号前面的表达式的值必须是个boolean类型的, a/b你这算出来不是个boolean类型,所以报错

3. b=-a++;    单目运算的优先级较高  所以这句等同于  b= (-a)++    由于赋值运算的优先级低于 ++      a++运算的说明是先把a拿去运算,然后在给a加1,

   所以  这里这个运算的结果是 b= (-a) ,而a= a+1

   假定a= 4

    那么经过b=-a++ 的运算后,b=(-4),  a=5

   通常不建议这么写表达式,很容易把自己搞昏了,特别是a++   与 ++a  ,

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
这是一个三元运算符 ,也是唯一的一个
? 左边是一个逻辑判断,如果为true整个表达式就为:左边的值,也就是a
如果为false整个表达式就为:右边的值,也就是b
max=a/b?a:b;     ?号左边的是a/b,这并不是一个逻辑判断,而这点必须是一个逻辑判断,或者直接写true或false

b=-a++;     你就这么记,那个离b近,就先算哪一个

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马