黑马程序员技术交流社区
标题:
好复杂的简单问题哦
[打印本页]
作者:
郑朝明
时间:
2013-1-17 20:35
标题:
好复杂的简单问题哦
本帖最后由 ™郑老 于 2013-1-17 20:37 编辑
max=a>b?a:b;//这是什么东东谁帮我翻译成中文意思
max=a/b?a:b;//报错这是为什么
b=-a++;//程序是怎么计算这东东的(是先先++还是先-a再++)
作者:
唐晓
时间:
2013-1-17 20:49
max=a>b?a:b
max的值是a和b比大小,谁大max的值就是谁
max=a/b?a:b;//没有这么写的,语法问题。
b=-a++;++的运算级别比-高,所以先执行a++,但是此时a的值没有变化,是运行后在自增1,下次调用a的返回值就是a+1.
作者:
罗志强
时间:
2013-1-17 20:49
本帖最后由 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再++)这个问题,我也需要求解,等等我翻翻书,在告诉你
刚刚翻书了!++ ,--的优先级是最低的,=号还在++之前,所以你这个表达式里面的++是没效果的
作者:
许庭洲
时间:
2013-1-17 20:49
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;这里的++没起作用。
作者:
李 玉林
时间:
2013-1-17 21:14
三元运算符的前部分应该是关系运算符,max=a/b?a:b;是错误的 复合运算符包括:+=,-=,*=,/=,b+=a同b=b+a 其他类同
作者:
黑马刘俊
时间:
2013-1-17 22:10
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 ,
作者:
乔培培
时间:
2013-1-18 15:04
这是一个三元运算符 ,也是唯一的一个
? 左边是一个逻辑判断,如果为true整个表达式就为:左边的值,也就是a
如果为false整个表达式就为:右边的值,也就是b
max=a/b?a:b; ?号左边的是a/b,这并不是一个逻辑判断,而这点必须是一个逻辑判断,或者直接写true或false
b=-a++; 你就这么记,那个离b近,就先算哪一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2