什么是1<<< 25意味着开放?

时间:2016-04-07 20:07:04

标签: c++ c linux

我正在阅读某人的代码,它有以下几行:

int fd = open(path, 1 << 25);

我无法理解,我试图谷歌它,我也没有找到任何答案,有人可以帮助我1的含义&lt;&lt; 25了吗?

编辑1:

我不明白这里发生了什么,为什么问题和答案都被低估了。 这是其他的代码,它有一个很大的代码库,重写它几乎是不可能的,现在程序有一些bug我必须解决它,这就是为什么我试图理解每一块代码,我是C的新手和C ++,我不确定这是我以前没见过的一些技巧,还是一个错字或其他东西。所以我问到这里,但是没有看到任何理由进行投票,有人可以解释一下吗? 顺便说一下,正如一些评论所指出的那样,它的工作原理可能是因为它溢出来充当0(RD_ONLY)。

2 个答案:

答案 0 :(得分:1)

在回答你的第二个问题时,关于贬低问题:它是什么 这样的事情。您询问的代码调用undefined 行为,或足够接近未定义行为的东西 触发每个人的未定义行为过滤器。

现在,未定义的行为通常很糟糕,但在此处 StackOverflow它的超级超级巨型非常糟糕。是这样的 你甚至不应该问这个问题,你只是 应该本能地知道它是坏的,甚至从来没有 编写首先使用它的代码。所以你已经去过了 作为一种惩罚,提醒你永远不要谈论 或者考虑或询问或编写任何未定义的行为代码 以后再。让这成为你的一课。

(这是公平的吗?不,当然不是。只是看看:因为我是 站在这里,这个答案 我的也将被投票。我发布它作为评论 而不是答案,但评论太长了。)

(其他人会解释你不应该对此感到不好 贬低,它不会反映你,它就是这样 这样一个奇怪的问题,没有人会再问它,所以它 不属于StackOverflow的存储库,这是假设的 是一个高质量的问题,其他人可能会再问 以后想学习。)

ADDENDUM:现在它被搁置了,因为太宽了&#34;。您可能想知道这意味着什么。

这实际上是一个精妙的问题,以一种不正常的方式。它非常令人困惑,并且有很多答案,它们变得难以置信地混淆了。有些人告诉你,1<<25是一个错误,碰巧被忽略了。有些人告诉你,这是一个错误,使你的程序不起作用(尽管事实上似乎)。有些人试图找出1<<25在这里实际意味着什么,而且他们是最混乱的,因为它当然没有任何意义。但要问的问题是假设它必须具有某些含义,所以混淆几乎是不可避免的。

答案 1 :(得分:0)

<<表示按位向左移位。 二进制1中写入1,因此1 << 25的结果为10000000000000000000000000,可以用十六进制编写2000000

编辑:我同意EOF对您提问的评论。