绝大部分人不知道的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 好吧, 确实不认识 更关心这个运算符编译后会变成什么 又学了一招,确实是不知道! 本帖最后由 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)
恍然大悟......
结论,这根本就不是啥新运算符,就是 "--" 和 ">" 两个运算、或者是 "++" 和 "<" 两个运算符放在了一起。
还真没见过 有没有试过变量是float类型的?而且什么是趋向于啊? 总觉得趋向于是一种模拟量的感觉, 你这个算是有步进的吧 我觉得就是一个(--) 加一个(>) ,以这个例子来看就是while 先判断x是否 > 0, 然后再x-- 我怎么看是while(( x--)>0)呢 RainerZhang 发表于 2015-1-7 13:08
我觉得就是一个(--) 加一个(>) ,以这个例子来看就是while 先判断x是否 > 0, 然后再x-- ...
x --›
x与--之间有个空格,就不一样了。 应该是while ((x--) > 0)
LZ还可以试试x ++> 100{:lol:} x-->0 不就是x--大于0吗?
有没有人可以试下x++<100? x-- 炸鱼{:smile:} 之前也被同学骗了 还没看完就知道楼主要挨批,打好基础很重要,哈哈 晕,我还被忽悠进去了 真没听说过这符号,楼主自创的。 明明是x-- {:sweat:}趋向于… 这是知乎上测试智商的回答么 亲自试了一下,LZ在骗人。 hameyou 发表于 2015-1-7 13:13
真受不了楼主,这也叫运算符,还取了一个马甲”趋向于”,
看清了 x --> 0
哈哈, 第一次看到的时候我差点被忽悠瘸了, 然后转过来逗一下大家.{:lol:} ggchao 发表于 2015-1-7 13:22
亲自试了一下,LZ在骗人。
但是代码确实能运行哦.{:lol:} 呵呵,被骗了吧
应该是
while(x-->0)
{
}
不是
while(x --> 0)
{
} 刚开始的那个瞬间也确实被骗了{:lol:}楼主你坏坏 第一眼就看出来了X-- 第一眼就看出来了X-- 很明显了,while( (x--) > 0 ) 呵呵!这个不是运算符吧 哈哈,还想收藏学习呐{:lol:}{:lol:} - - 第一眼就看出来了x-- 好吧,请学习C语言运算优先级。 太坏了,骗人。。 {:funk:},,,这明显了 这个一看就知道在 While Loop 内将 10 附于到 x 的变数内一直减到等于零后就跳出 Loop 了。 额。。是-- 和>两个运算符吧 --的优先级高!所以有这样的结果 这分明是把“x-- > 0”写成“x --> 0”{:sweat:} 有人上当了!!! uint8_t x = 5;
if (x --> 0) {
printf("x还趋向于0吗!!!?");
} 趋向于?减减大于吧 先判断后减吧?LZ上当了 一般我都写成while(x--);当然x初始值必定大于零。 差点被忽悠 楼主你好坏滴,信不信我举报你!{:titter:} 开玩笑啦{:titter:} {:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:} 忽悠,继续忽悠。。。 楼主真不应该忽悠小盆友们,明明是x-- >0,最常规的c语句 这样忽悠没学过的,不好吧 哈哈 如果x初值为负,那就不能叫”趋向于”了 {:sweat:}楼主不带这样忽悠的哦 哈哈哈哈哈,我分享给同事看了 楼主给大家了一个学习吐槽的好机会~~~ 。。。。。。自加1,自减1优先级非常高的。。。。 我怎么看着就是自减运算哈?!~~ 确实是没有见过,人外有山啊! {:sad:}被楼主忽悠了,我还以为真有什么神奇运算符,看了5L的回答,才回过神........ 哈哈,看着边想,明摆就是运算先后问题了 我也给绕进去了~先入为主了~ 搞笑,差点被忽悠 撸主几年级的? LZ是来搞笑的,大家就别较真了。 一开始看的时候,我也以为是长知识了。
hameyou 发表于 2015-1-7 13:13
真受不了楼主,这也叫运算符,还取了一个马甲”趋向于”,
看清了 x --> 0
同意,纯属误导 x-->0,--在X的后面,所以想判断X的大小,在做--运算,打印的实际是X-- 被忽悠了 这是逗着玩呢? 5楼正解。 哈哈,差点上当了 {:biggrin:} 确实不知道,涨知识了 哈哈哈。。。你们被楼主玩了。。 直接whlie(x--)多好 楼主坏坏的说.... while (X-- >0) 挺有才的,给大家普及一下C语言的基本知识 能不逗吗,亲 哈哈哈,自创新招 国人工程师的基础实在不好 {:smile:}哥们你中奖了! {:lol:}自减然后比较,兄弟真厉害,能创造发明新名称~! 冷不丁一头冷汗,上当了 恩,是个好方法,哈哈。 被骗了,看来得复习一下C 确定不是 X-- 大于 0 ? 上当了,应该就是x--大于0吧 刚开始看感觉很厉害,仔细想想就知道是神马原因了 额,没发现问题所在,还是看楼上知道的 楼主是被逗了,还是来逗人的。 不错,还真不认识 LZ你还不清楚
C语言有左结合右结合把
你转的就是C语言里面的结合规则 。。。 (x--)>0 编译器是这么认为的 这不是跟(x--) > 0一个意思 哈哈,看看确实不对劲。明明是 - - 和 >两个运算符。 而且- -放在x前和放在x后是有区别的。 这帖子建议楼主加个备注啥的吧,初学者要是一时没反应过来还没注意下面的回复的话就被误导了。 刚看到一愣呢,幸好楼下有高人分析,我怎么没看出来呢{:sad:} 差点被忽悠了 挨忽悠了{:biggrin:} 唉,很明显 是先自减--再>判断,这都看不出来? 这个还真不知道,学习了 差点被你忽悠,这不就是 while( (x--)>0 )