DevLabs 发表于 2015-1-7 12:59:52

绝大部分人不知道的C语言运算符


C有一个鲜为人知的运算符叫”趋向于”, 写作“-->”。比如说如果要实现一个倒数的程序,我们可以定义一个变量x,然后让它趋向与0:


#include <stdio.h>

int main(int argc, char** argv) {
int x = 10;
while (x --> 0) {
    printf("%d ", x);
}
return 0;
}

会打印出:
9 8 7 6 5 4 3 2 1 0

引用自: http://www.zhihu.com/question/27417946

有缘于你 发表于 2015-1-7 13:02:11

好吧, 确实不认识

zmgo 发表于 2015-1-7 13:04:22

更关心这个运算符编译后会变成什么

zhaotyue 发表于 2015-1-7 13:05:37

又学了一招,确实是不知道!

LCRPN 发表于 2015-1-7 13:06:19

本帖最后由 LCRPN 于 2015-1-7 13:30 编辑

和 “while (x != 0)” 有什么区别?


----------------------

哦,没仔细看。

难道是: 如果 x > 被比较的数, 就自减 1 ;
             如果 x < 被比较的数, 就自加 1 ?

----------------------

最新惊天地泣鬼神的发现,创造性地尝试了一下:
#include "stdio.h"

int main(int argc, char** argv) {
        int x = -10;
        while (x ++< 5)
        {
                printf("%i ", x);
        }
        printf("\n%i \n", x);
        return 0;
}

输出:
-9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5
6
Press any key to continue

又试了一下:
while (x ++ < 5)

while (x -- < 0)
恍然大悟......

结论,这根本就不是啥新运算符,就是 "--" 和 ">" 两个运算、或者是 "++" 和 "<" 两个运算符放在了一起。

k_er_tlwei 发表于 2015-1-7 13:06:41

还真没见过

浮华一生 发表于 2015-1-7 13:08:21

有没有试过变量是float类型的?而且什么是趋向于啊? 总觉得趋向于是一种模拟量的感觉, 你这个算是有步进的吧

RainerZhang 发表于 2015-1-7 13:08:33

我觉得就是一个(--) 加一个(>) ,以这个例子来看就是while 先判断x是否 > 0, 然后再x--

tam2907 发表于 2015-1-7 13:08:41

我怎么看是while(( x--)>0)呢

rainbow 发表于 2015-1-7 13:10:48

RainerZhang 发表于 2015-1-7 13:08
我觉得就是一个(--) 加一个(>) ,以这个例子来看就是while 先判断x是否 > 0, 然后再x-- ...

x --›
x与--之间有个空格,就不一样了。

Huaan 发表于 2015-1-7 13:11:50

应该是while ((x--) > 0)
LZ还可以试试x ++> 100{:lol:}

Elex 发表于 2015-1-7 13:13:45

x-->0 不就是x--大于0吗?
有没有人可以试下x++<100?

Puppey 发表于 2015-1-7 13:17:30

x-- 炸鱼{:smile:} 之前也被同学骗了

ApexUSB 发表于 2015-1-7 13:19:05

还没看完就知道楼主要挨批,打好基础很重要,哈哈

likebo 发表于 2015-1-7 13:19:23

晕,我还被忽悠进去了

n0831 发表于 2015-1-7 13:19:37

真没听说过这符号,楼主自创的。

jameszxj 发表于 2015-1-7 13:20:20

明明是x--

kinoko 发表于 2015-1-7 13:21:17

{:sweat:}趋向于…

zylaputa 发表于 2015-1-7 13:22:47

这是知乎上测试智商的回答么

ggchao 发表于 2015-1-7 13:22:47

亲自试了一下,LZ在骗人。

DevLabs 发表于 2015-1-7 13:24:21

hameyou 发表于 2015-1-7 13:13
真受不了楼主,这也叫运算符,还取了一个马甲”趋向于”,

看清了      x --> 0


哈哈, 第一次看到的时候我差点被忽悠瘸了, 然后转过来逗一下大家.{:lol:}

DevLabs 发表于 2015-1-7 13:25:46

ggchao 发表于 2015-1-7 13:22
亲自试了一下,LZ在骗人。

但是代码确实能运行哦.{:lol:}

whatcanitbe 发表于 2015-1-7 13:28:41

呵呵,被骗了吧
应该是
while(x-->0)
{

}

不是
while(x --> 0)
{

}

jacky_yhy 发表于 2015-1-7 13:30:22

刚开始的那个瞬间也确实被骗了{:lol:}楼主你坏坏

cumthe 发表于 2015-1-7 13:34:32

第一眼就看出来了X--

cumthe 发表于 2015-1-7 13:35:02

第一眼就看出来了X--

v灰尘 发表于 2015-1-7 13:35:28

很明显了,while( (x--) > 0 )

小浮土 发表于 2015-1-7 13:35:41

呵呵!这个不是运算符吧

扬帆远航 发表于 2015-1-7 13:35:54

哈哈,还想收藏学习呐{:lol:}{:lol:}    - -

cumthe 发表于 2015-1-7 13:36:23

第一眼就看出来了x--

mangocity 发表于 2015-1-7 13:36:55

好吧,请学习C语言运算优先级。

sywh 发表于 2015-1-7 13:37:48

太坏了,骗人。。

yy918 发表于 2015-1-7 13:39:15

{:funk:},,,这明显了

xyz543 发表于 2015-1-7 13:39:38

这个一看就知道在 While Loop 内将 10 附于到 x 的变数内一直减到等于零后就跳出 Loop 了。

TheRealK 发表于 2015-1-7 13:40:42

额。。是-- 和>两个运算符吧 --的优先级高!所以有这样的结果

zhenghe 发表于 2015-1-7 13:44:37

这分明是把“x-- > 0”写成“x --> 0”{:sweat:}

cddxhy 发表于 2015-1-7 13:46:33

有人上当了!!!

zhenghe 发表于 2015-1-7 13:48:26

uint8_t x = 5;
if (x --> 0) {
    printf("x还趋向于0吗!!!?");
}

tirion 发表于 2015-1-7 13:49:18

趋向于?减减大于吧

mangoes 发表于 2015-1-7 13:55:24

先判断后减吧?LZ上当了

WindDragon 发表于 2015-1-7 14:02:26

一般我都写成while(x--);当然x初始值必定大于零。

sbk100 发表于 2015-1-7 14:05:16

差点被忽悠

newlife2lyf 发表于 2015-1-7 14:10:17

楼主你好坏滴,信不信我举报你!{:titter:}

chengz 发表于 2015-1-7 14:13:52

开玩笑啦{:titter:}

wmm20031015 发表于 2015-1-7 14:24:12

{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}

erpao 发表于 2015-1-7 14:25:45

忽悠,继续忽悠。。。

johnlj 发表于 2015-1-7 14:27:34

楼主真不应该忽悠小盆友们,明明是x-- >0,最常规的c语句

ericw2012 发表于 2015-1-7 14:31:30

这样忽悠没学过的,不好吧

sky_walker 发表于 2015-1-7 14:31:34

哈哈                        

lcw_swust 发表于 2015-1-7 14:31:59

如果x初值为负,那就不能叫”趋向于”了

tim 发表于 2015-1-7 14:34:24

{:sweat:}楼主不带这样忽悠的哦

CodingFarmer 发表于 2015-1-7 14:53:28

哈哈哈哈哈,我分享给同事看了

only_lu 发表于 2015-1-7 15:00:13

楼主给大家了一个学习吐槽的好机会~~~

brahen 发表于 2015-1-7 15:02:38

。。。。。。自加1,自减1优先级非常高的。。。。

popwolf 发表于 2015-1-7 15:03:46

我怎么看着就是自减运算哈?!~~

signal_12345 发表于 2015-1-7 15:07:14

确实是没有见过,人外有山啊!

疯狂者 发表于 2015-1-7 15:07:35

{:sad:}被楼主忽悠了,我还以为真有什么神奇运算符,看了5L的回答,才回过神........

DiaoMao_Huang 发表于 2015-1-7 15:08:27

哈哈,看着边想,明摆就是运算先后问题了

liangzanyao 发表于 2015-1-7 15:13:58

我也给绕进去了~先入为主了~

771494781 发表于 2015-1-7 15:17:35

搞笑,差点被忽悠

sunnyqd 发表于 2015-1-7 15:20:53

撸主几年级的?

skylly3 发表于 2015-1-7 15:23:55

LZ是来搞笑的,大家就别较真了。

tianzhiying 发表于 2015-1-7 15:35:11

一开始看的时候,我也以为是长知识了。

Maurice 发表于 2015-1-7 15:43:29

hameyou 发表于 2015-1-7 13:13
真受不了楼主,这也叫运算符,还取了一个马甲”趋向于”,

看清了      x --> 0


同意,纯属误导

7nian 发表于 2015-1-7 15:44:14

x-->0,--在X的后面,所以想判断X的大小,在做--运算,打印的实际是X--

interxiaodao 发表于 2015-1-7 15:46:55

被忽悠了

ryphoon 发表于 2015-1-7 15:51:33

这是逗着玩呢?

fbestwish1 发表于 2015-1-7 15:54:09

5楼正解。   

fenxiang1103 发表于 2015-1-7 15:55:58

哈哈,差点上当了

daleda 发表于 2015-1-7 15:56:05

{:biggrin:} 确实不知道,涨知识了

xianghaisha 发表于 2015-1-7 15:57:53

哈哈哈。。。你们被楼主玩了。。

i7gly 发表于 2015-1-7 16:17:30

直接whlie(x--)多好

sunbest80 发表于 2015-1-7 16:21:40

楼主坏坏的说....

mcu5i51 发表于 2015-1-7 16:27:30

while (X--    >0)

zhugean 发表于 2015-1-7 16:28:12

挺有才的,给大家普及一下C语言的基本知识

SealedGhost 发表于 2015-1-7 16:42:52

能不逗吗,亲

skynet 发表于 2015-1-7 16:46:57

哈哈哈,自创新招

amigenius 发表于 2015-1-7 16:52:38

国人工程师的基础实在不好

moonspell 发表于 2015-1-7 16:59:35

{:smile:}哥们你中奖了!

luckysamsang 发表于 2015-1-7 17:01:07

{:lol:}自减然后比较,兄弟真厉害,能创造发明新名称~!

huojianfei 发表于 2015-1-7 17:01:22

冷不丁一头冷汗,上当了

niaojingxin 发表于 2015-1-7 17:07:43

恩,是个好方法,哈哈。

YuWan 发表于 2015-1-7 17:14:57

被骗了,看来得复习一下C

dengxiaofeng 发表于 2015-1-7 17:14:58

确定不是 X-- 大于 0 ?

loveskangaroo 发表于 2015-1-7 17:16:25

上当了,应该就是x--大于0吧

Lu.Shi 发表于 2015-1-7 17:20:51

刚开始看感觉很厉害,仔细想想就知道是神马原因了

za250010447 发表于 2015-1-7 17:26:43

额,没发现问题所在,还是看楼上知道的

RUANJI 发表于 2015-1-7 17:28:52

楼主是被逗了,还是来逗人的。

lu976046395 发表于 2015-1-8 11:14:13

不错,还真不认识                     

majialou 发表于 2015-1-8 11:55:25

LZ你还不清楚
C语言有左结合右结合把
你转的就是C语言里面的结合规则

acmilannast 发表于 2015-1-8 12:05:57

。。。 (x--)>0 编译器是这么认为的

ccyhyxt 发表于 2015-1-8 12:15:58

这不是跟(x--) > 0一个意思

小咯咯怒 发表于 2015-1-8 12:17:29

哈哈,看看确实不对劲。明明是 - - 和 >两个运算符。 而且- -放在x前和放在x后是有区别的。

小咯咯怒 发表于 2015-1-8 12:19:41

这帖子建议楼主加个备注啥的吧,初学者要是一时没反应过来还没注意下面的回复的话就被误导了。

whp1920 发表于 2015-1-8 12:22:32

刚看到一愣呢,幸好楼下有高人分析,我怎么没看出来呢{:sad:}

kevee365 发表于 2015-1-8 12:28:55

差点被忽悠了

boyubeiyu 发表于 2015-1-8 12:34:10

挨忽悠了{:biggrin:}

alwxkxk 发表于 2015-1-8 12:36:26

唉,很明显 是先自减--再>判断,这都看不出来?

AHTY 发表于 2015-1-8 12:43:49

这个还真不知道,学习了

biansf2001 发表于 2015-1-8 13:26:03

差点被你忽悠,这不就是 while( (x--)>0 )
页: [1] 2 3
查看完整版本: 绝大部分人不知道的C语言运算符