一个同事给了我一个难题,我无法弄清楚这个C程序实际上是如何编译和运行的。这个>>>=运算符和奇怪的1P1字面值是什么?我在Clang和GCC中进行了测试。没有警告,输出为“??”
#include <stdio.h>
int main()
{
int a[2]={ 10, 1 };
while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] )
printf("?");
return 0;
}
一个同事给了我一个难题,我无法弄清楚这个C程序实际上是如何编译和运行的。这个>>>=运算符和奇怪的1P1字面值是什么?我在Clang和GCC中进行了测试。没有警告,输出为“??”
#include <stdio.h>
int main()
{
int a[2]={ 10, 1 };
while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] )
printf("?");
return 0;
}
"foo" instanceof String //=> false
"foo" instanceof Object //=> false
true instanceof Boolean //=> false
true instanceof Object //=> false
false instanceof Boolean //=> false
false instanceof Object //=> false
12.21 instanceof Number //=> false
/foo/ instanceof RegExp //=> true
// the tests against Object really don't make sense
数组字面量和对象字面量匹配…
[0,1] instanceof Array //=> true
{0:1} instanceof Object //=> true
为什么不是所有人?或者,为什么不都不呢? 那么,它们是什么实例呢?
在FF3、IE7、Opera和Chrome中也是如此。至少它是一致的。
如何用Python文字将整数表示为二进制数?
我很容易就找到了hex的答案:
>>> 0x12AF
4783
>>> 0x100
256
和八进制:
>>> 01267
695
>>> 0100
64
在Python中如何使用文字来表示二进制?
回答摘要
Python 2.5及更早版本:可以使用int('01010101111',2)表示二进制,但不能使用字面量。 Python 2.5及更早版本:无法表示二进制字面值。 Python 2.6 beta:你可以这样做:0b1100111或0b1100111。 Python 2.6 beta:也将允许0o27或0o27(第二个字符是字母O)表示八进制。 Python 3.0 beta版:与2.6版相同,但不再允许八进制使用旧的027语法。
为了使用十进制数据类型,我必须对变量初始化这样做:
decimal aValue = 50.0M;
M部分代表什么?
在c#中的逐字字符串文字(@"foo")中,反斜杠不被视为转义,因此使用\"来获得双引号是行不通的。有没有办法在逐字串文字中获得双引号?
可以理解,这是行不通的:
string foo = @"this \"word\" is escaped";
我最近比较了[]和list()的处理速度,惊讶地发现[]比list()快三倍多。我用{}和dict()进行了相同的测试,结果几乎相同:[]和{}都花了大约0.128秒/百万次循环,而list()和dict()分别花了大约0.428秒/百万次循环。
为什么会这样?[]和{}(和probably()和",太)立即传递回一些空股票文字的副本,而他们的显式命名对应(list(), dict(), tuple(), str())完全创建一个对象,无论他们是否实际上有元素?
我不知道这两种方法有什么不同,但我很想知道。 我在文档或SO上找不到答案,而且搜索空括号的问题比我想象的要多。
我通过调用timeit.timeit("[]")和timeit.timeit("list()"),以及timeit.timeit("{}")和timeit.timeit("dict()")来获得计时结果,分别比较列表和字典。我运行的是Python 2.7.9。
我最近发现了“为什么if True比if 1慢?”,它比较了if True和if 1的性能,似乎涉及到类似的字面与全局场景;也许这也值得考虑。