C语言里if(x ==!(!x))这种东西有什么意义吗?

2013-04-12 09:43:17 +08:00
 sivacohan
一个蛋疼的孩子问的。
我第一反应是这孩子一定是看了谭爷爷写的书。
然后又觉得这个提供了一个bool类型检测的手段。

把谭老先生的因素排除,这种写法,还能产生什么作用呢?
6374 次点击
所在节点    问与答
10 条回复
wjchen
2013-04-12 09:49:20 +08:00
x是int类型的话,判断x是否是0或者1.
kingwkb
2013-04-12 09:55:01 +08:00
这是反人类的写法
ini
2013-04-12 10:16:20 +08:00
初一看,是在转换bool类型,但C语言没有bool类型,所以实际是在扯蛋。
我感觉写出这种语句的人,肯定是js写多了吧,js里面偶尔会有这种写法,当然也只是偶尔。

个人看法,勿喷。
200
2013-04-12 10:21:47 +08:00
一般这种东西都是写成宏来用
chmlai
2013-04-12 10:28:02 +08:00
写这种代码真是蛋痛;
之前合作一个项目, 有人这样写:
if (!!x) {}
if (!!!x) {}
真想死....
xatest
2013-04-12 10:30:52 +08:00
蛋疼写法,没有必要,只能提高代码的逼格。
sivacohan
2013-04-12 10:43:30 +08:00
@kingwkb

说了排除谭先生的因素了


@ini

目测没见过这么写js,谁要这么写,我保证揍他!


@chmlai

这么写的人,必须锤死!!


@xatest

恩,我认为你说的对!
这是某个大二坚持Emacs比vim好用无数倍,其实只是觉得Emacs用ctrl比vim用Esc键位不方便……连自定义键位都不知道的孩子提出的我认为是用来装逼的问题……
66450146
2013-04-12 10:51:32 +08:00
@chmlai 什么样的人才能写出这种代码啊。。。
guoxx_
2013-04-12 14:10:02 +08:00
int boolX = !!x
if(boolTypeValue != boolX){
boolTypeValue = boolX

// bala bala
}

应该是这样的吧
int boolX = !!x; gcc 4.2.1会把x的值强制转换成o or 1, 所以就可以用boolTypeValue == boolX了
个人觉得lz貌似把代码写错了
chmlai
2013-04-12 14:18:50 +08:00
@guoxx_ 是的, int boolX = !!x 赋值的时候有用.
lz那种写法是没有意义的.
if是非零判断, 应该和false(或0)比较的.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/65649

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX