1
gclove 2017-12-20 19:35:34 +08:00
理解不了.. i 和 j 没有声明吗 ?
|
2
YMB 2017-12-20 19:36:43 +08:00
c = (i>0)?i:j;// c=i || c=j
c=1; emmmm... |
3
hitmanx 2017-12-20 19:39:06 +08:00
还能这样写啊?。。
((i>0) ? i : j)这个返回的是左值? |
4
shoujiaxin 2017-12-20 19:39:31 +08:00 via iPhone
i 大于 0 就把 1 赋给 i,否则赋给 j ?
|
6
geelaw 2017-12-20 19:41:39 +08:00
if (i > 0) i = 1; else j = 1;
这个对 C 似乎无效。 |
7
hitmanx 2017-12-20 19:42:36 +08:00 2
搜了一下,还真有人讨论 ternary operator expression 是不是 lvalue 的:https://www.reddit.com/r/ProgrammerTIL/comments/4zr491/c_a_ternary_operator_expression_is_an_lvalue/?st=jbezlb70&sh=ff573171
这个写法估计代码 review 的时候会被喷 |
8
fatttt 2017-12-20 19:51:47 +08:00 via Android
不用理解,找写代码回来返工。
|
9
IamJ 2017-12-20 20:19:40 +08:00 via iPhone
要是组里谁写出这样的代码我打断他狗腿
|
10
LGA1150 2017-12-20 21:30:16 +08:00
gcc 编译报错,g++ 正常编译并执行
版本 5.4.0 x86_64-linux-gnu |
11
Terry05 2017-12-20 21:45:55 +08:00
先不论这条语句执行结果有不有报错,这种让大多数人阅读起来有困难,或是有岐义的代码,在实际项目开发过程就是要尽量避免的,总保不准某些代码最终就交接到了刚毕业的新人手上
这种类似于 “炫技” 的代码,要么可以在开源插件里使用,以表示作者的高超水平,要么最好就面试题里,教科书里弄弄就好,做项目就是要尽量避免给自己给别人挖坑 |
12
lrxiao 2017-12-21 01:57:39 +08:00
ternary 首先要是同类型不然会做 common_type 转换成 rvalue
|
13
lrxiao 2017-12-21 01:59:43 +08:00
c 语法就不支持这种
|
14
Tink 2017-12-21 02:07:34 +08:00 via iPhone
为了三目而三目
|
15
amai 2017-12-21 08:09:23 +08:00
三元判断
|
16
print1024 2017-12-21 08:21:09 +08:00
等价于 if (i>0){i=1}else{j=1}
|
17
ray8888 2017-12-21 08:35:44 +08:00
写这种代码有什么意思,没有一点易读性
|
18
dumplinger 2017-12-21 09:45:52 +08:00
@hitmanx 噗,不是左值……
|
19
canxden 2017-12-21 11:22:56 +08:00
Expression is not assignable
|
21
yaowenz 2017-12-21 17:50:40 +08:00
写的人拉出去枪毙
|