草庐IT

Operators

全部标签

c++ - x += a 比 x = x + a 快吗?

我正在阅读Stroustrup的“C++编程语言”,他说向变量添加内容的两种方法中x=x+a;和x+=a;他更喜欢+=,因为它很可能实现得更好。我认为他的意思是它也工作得更快。但真的吗?如果它取决于编译器和其他东西,我该如何检查? 最佳答案 任何称职的编译器都会为任何内置类型(int、float等)的两种构造生成完全相同的机器语言序列,只要该语句实际上就像x=x+a;并且启用了优化一样简单。(值得注意的是,GCC的-O0是默认模式,它执行反优化,例如将完全不必要的存储插入到内存中,以确保调试器总能找到变量值。)但是,如果语句更复杂,

c++ - x += a 比 x = x + a 快吗?

我正在阅读Stroustrup的“C++编程语言”,他说向变量添加内容的两种方法中x=x+a;和x+=a;他更喜欢+=,因为它很可能实现得更好。我认为他的意思是它也工作得更快。但真的吗?如果它取决于编译器和其他东西,我该如何检查? 最佳答案 任何称职的编译器都会为任何内置类型(int、float等)的两种构造生成完全相同的机器语言序列,只要该语句实际上就像x=x+a;并且启用了优化一样简单。(值得注意的是,GCC的-O0是默认模式,它执行反优化,例如将完全不必要的存储插入到内存中,以确保调试器总能找到变量值。)但是,如果语句更复杂,

c++ - C中的波浪号运算符

我见过ELF散列算法中使用的波浪号运算符,我很好奇它的作用。(代码是fromEternallyConfused。)unsignedelf_hash(void*key,intlen){unsignedchar*p=key;unsignedh=0,g;inti;for(i=0;i>24;h&=~g;}returnh;} 最佳答案 ~运算符是按位的NOT,它将二进制数中的位反转:NOT011100=100011 关于c++-C中的波浪号运算符,我们在StackOverflow上找到一个类似的问

c++ - C中的波浪号运算符

我见过ELF散列算法中使用的波浪号运算符,我很好奇它的作用。(代码是fromEternallyConfused。)unsignedelf_hash(void*key,intlen){unsignedchar*p=key;unsignedh=0,g;inti;for(i=0;i>24;h&=~g;}returnh;} 最佳答案 ~运算符是按位的NOT,它将二进制数中的位反转:NOT011100=100011 关于c++-C中的波浪号运算符,我们在StackOverflow上找到一个类似的问

objective-c - 了解按位与运算符

我一直在Kochan的《Objective-C编程》一书中阅读有关Objective-C中位运算符的内容。我对这部分感到非常困惑,尽管到目前为止我已经真正理解了大多数其他呈现给我的东西。这是书中的一段话:位与运算符按位与经常用于屏蔽操作。也就是说,该运算符可以很容易地用于将数据项的特定位设置为0。例如,语句w3=w1&3;将w1的值与常数3按位与运算分配给w3。这与将w中的所有位设置为相同的效果,除了最右边的两位为0并保留w1的最右边的两位。与C中的所有二进制算术运算符一样,二进制位运算符也可以通过添加等号用作赋值运算符。声明word&=15;因此执行与以下相同的功能:word=wor

objective-c - 了解按位与运算符

我一直在Kochan的《Objective-C编程》一书中阅读有关Objective-C中位运算符的内容。我对这部分感到非常困惑,尽管到目前为止我已经真正理解了大多数其他呈现给我的东西。这是书中的一段话:位与运算符按位与经常用于屏蔽操作。也就是说,该运算符可以很容易地用于将数据项的特定位设置为0。例如,语句w3=w1&3;将w1的值与常数3按位与运算分配给w3。这与将w中的所有位设置为相同的效果,除了最右边的两位为0并保留w1的最右边的两位。与C中的所有二进制算术运算符一样,二进制位运算符也可以通过添加等号用作赋值运算符。声明word&=15;因此执行与以下相同的功能:word=wor

objective-c - 问号和冒号是什么意思(?: ternary operator) mean in objective-c?

这行代码是什么意思?label.frame=(inPseudoEditMode)?kLabelIndentedRect:kLabelRect;?和:让我很困惑。 最佳答案 这是Cternaryoperator(Objective-C是C的超集):label.frame=(inPseudoEditMode)?kLabelIndentedRect:kLabelRect;在语义上等价于if(inPseudoEditMode){label.frame=kLabelIndentedRect;}else{label.frame=kLabelRe

objective-c - 问号和冒号是什么意思(?: ternary operator) mean in objective-c?

这行代码是什么意思?label.frame=(inPseudoEditMode)?kLabelIndentedRect:kLabelRect;?和:让我很困惑。 最佳答案 这是Cternaryoperator(Objective-C是C的超集):label.frame=(inPseudoEditMode)?kLabelIndentedRect:kLabelRect;在语义上等价于if(inPseudoEditMode){label.frame=kLabelIndentedRect;}else{label.frame=kLabelRe

python - "is"运算符对整数的行为异常

为什么在Python中出现以下异常行为?>>>a=256>>>b=256>>>aisbTrue#Thisisanexpectedresult>>>a=257>>>b=257>>>aisbFalse#Whathappenedhere?WhyisthisFalse?>>>257is257True#Yettheliteralnumberscompareproperly我使用的是Python2.5.2。尝试一些不同版本的Python,似乎Python2.3.3显示了99到100之间的上述行为。基于上述,我可以假设Python是在内部实现的,因此“小”整数的存储方式与较大的整数不同,is运算符可

python - "is"运算符对整数的行为异常

为什么在Python中出现以下异常行为?>>>a=256>>>b=256>>>aisbTrue#Thisisanexpectedresult>>>a=257>>>b=257>>>aisbFalse#Whathappenedhere?WhyisthisFalse?>>>257is257True#Yettheliteralnumberscompareproperly我使用的是Python2.5.2。尝试一些不同版本的Python,似乎Python2.3.3显示了99到100之间的上述行为。基于上述,我可以假设Python是在内部实现的,因此“小”整数的存储方式与较大的整数不同,is运算符可