Re: [问题] 请教这段程式,在详述什么动作?

楼主: flydragon198 (Richard)   2018-06-25 22:17:57
※ 引述《jenho001 (清香小白莲)》之铭言:
: i % 2 ? x = x + 1 : x = x + 2
: 请大侠们解惑
: 我真看不懂它在讲什么>"<
※ 引述《jenho001 (清香小白莲)》之铭言:
: i % 2 ? x = x + 1 : x = x + 2
: 请大侠们解惑
: 我真看不懂它在讲什么>"<
程式有一个写法
A ? B : C
意思是A如果成立(true),就执行B,要不然就执行C
把这个程式分成两部分来看就比较容易了
i%2 ? x=x+1 : x=x+2
i%2是否为true,如果成立就执行x=x+1,否则执行 x=x+2
i%2 的结果不是0就是1
所以就会等于看i是奇数或偶数来决定要执行哪一个
楼主: flydragon198 (Richard)   2018-06-25 22:36:00
话说,如果看到有人这样写,先尻他一拳.......
作者: y3k (激流を制するは静水)   2018-06-26 00:00:00
其实这写法很基本 只是可以的话加个括号
作者: cphe (魔鬼藏在垃圾筒里)   2018-06-26 00:43:00
这写法算常见,尤其在if else只有一行情况或是要return不同值更简洁,复杂条件时括号括满就好
作者: s9041200 (小明阿)   2018-06-26 00:57:00
要写也写成 x += i%2 ? 1 : 2 也比较好吧
作者: Schottky (顺风相送)   2018-06-26 02:17:00
同意楼上。还有括号真的不需要省著用。
作者: FrozenMoment   2018-06-26 07:45:00
推s大,原来的写法个人觉得蛮差的
作者: PkmX (阿猫)   2018-06-26 10:48:00
x += 2 - i%2; (╯°□°)╯︵ ┴━┴
作者: shadow0326 (非议)   2018-06-26 14:32:00
x += (2 >> i%2); (╯°□°)╯︵ ┴━┴
作者: jerryh001   2018-06-26 15:38:00
x-=-(x&2? x%2==1 : 2) (╯°□°)╯︵ ┴━┴x-=-(x&1? x%2==1 : 2) (╯°□°)╯︵ ┴━┴应该这样才对
作者: PkmX (阿猫)   2018-06-26 15:43:00
楼上你的i呢?
作者: jerryh001   2018-06-26 15:45:00
x-=-(i&1? i%2==1 : 2) (╯°□°)╯︵ ┴━┴再翻一次桌 (╯°□°)╯︵ ┴━┴
作者: stupid0319 (征女友)   2018-06-26 19:46:00
x += (2 >> (i&1))
作者: PkmX (阿猫)   2018-06-27 11:53:00
x += (1 << (~i&1)) (喂
作者: sarafciel (Cattuz)   2018-06-27 12:27:00
我只是来翻桌的 (╯°□°)╯︵ ┴━┴

Links booklink

Contact Us: admin [ a t ] ucptt.com