标签: comparison-operators

1592
推荐指数
2
解决办法
97万
查看次数

最优雅的方法来检查Python中的字符串是否为空?

Python是否有类似空字符串变量的地方,你可以这样做:

if myString == string.empty:
Run Code Online (Sandbox Code Playgroud)

无论如何,检查空字符串值的最优雅方法是什么?我""每次都发现硬编码检查空字符串不太好.

python string comparison-operators

1282
推荐指数
14
解决办法
148万
查看次数

什么是Ruby <=>(太空船)运营商?

什么是Ruby <=>(宇宙飞船)运营商?运营商是否通过其他语言实施?

ruby operators comparison-operators spaceship-operator

250
推荐指数
5
解决办法
9万
查看次数

165
推荐指数
6
解决办法
3万
查看次数

"!=="和"==!"之间的区别

昨天我在修改其他人编写的PHP代码时偶然发现了这个问题.我很困惑,一个简单的比较(if ($var ==! " "))没有按预期工作.经过一些测试后,我意识到编写该代码的人使用==!而不是!==作为比较运算符.我从来没有见过==!任何语言,所以我想知道这个代码到底是怎么工作的并做了一些测试:

<?php
echo "int\n";
echo "1 !== 0: "; var_dump(1 !== 0);
echo "1 !== 1: "; var_dump(1 !== 1);
echo "1 ==! 0: "; var_dump(1 ==! 0);
echo "1 ==! 1: "; var_dump(1 ==! 1);
echo "bool\n";
echo "true !== false: "; var_dump(true !== false);
echo "true !== true: "; var_dump(true !== true);
echo "true ==! false: "; var_dump(true ==! false);
echo "true ==! true: "; var_dump(true …
Run Code Online (Sandbox Code Playgroud)

php comparison operators comparison-operators

162
推荐指数
5
解决办法
7914
查看次数

操作"假<true"是否定义明确?

C++规范是否定义:

  1. 布尔参数的'小于'运算符的存在,如果存在,
  2. 4个参数排列的结果?

换句话说,是否由规范定义的以下操作的结果?

false < false
false < true
true < false
true < true
Run Code Online (Sandbox Code Playgroud)

在我的设置(Centos 7,gcc 4.8.2)中,下面的代码吐出我期望的内容(假设C的历史表示false为0,true为1):

false < false = false
false < true = true
true < false = false
true < true = false
Run Code Online (Sandbox Code Playgroud)

虽然我很确定大多数(所有?)编译器会提供相同的输出,这是否由C++规范立法?或者是一个混淆但符合规范的编译器允许判断true是否小于false?

#include <iostream>

const char * s(bool a)
{
  return (a ? "true" : "false");
}

void test(bool a, bool b)
{
  std::cout << s(a) << " < " << s(b) << " = " << s(a < b) << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ boolean comparison-operators language-lawyer

152
推荐指数
4
解决办法
1万
查看次数

在TWIG中查找字符串中的子字符串

我想找到字符串的子字符串或使用Twig检查是否没有这样的子字符串.换句话说,我需要在php中使用'strstr'或'strpos'的模拟.我用Google搜索并在stackoverflow中搜索了这个问题,但没有找到.有人知道如何解决这个问题吗?

php substring comparison-operators twig

124
推荐指数
1
解决办法
12万
查看次数

在比较C++中的结构时找不到==运算符

比较以下结构的两个实例,我收到一个错误:

struct MyStruct1 {
    Position(const MyStruct2 &_my_struct_2, const int _an_int = -1) :
        my_struct_2(_my_struct_2),
        an_int(_an_int)
    {}

    std::string toString() const;

    MyStruct2 my_struct_2;
    int an_int;
};
Run Code Online (Sandbox Code Playgroud)

错误是:

错误C2678:二进制'==':找不到哪个运算符带有'myproj :: MyStruct1'类型的左手操作数(或者没有可接受的转换)

为什么?

c++ struct comparison-operators

91
推荐指数
4
解决办法
10万
查看次数

为什么C++ 11包含一个关于比较void指针的奇怪子句?

在检查另一个问题的引用时,我注意到C++ 11中的一个奇数子句,在[expr.rel]3:

指针void(后指针转化)可以进行比较,以确定其结果如下:如果两个指针表示相同的地址或均为空指针值,其结果是true,如果操作者 <=>=false其他方式; 否则结果未指定.

这似乎意味着,一旦两个指针被投入void *,它们的排序关系就不再有保证; 例如,这个:

int foo[] = {1, 2, 3, 4, 5};
void *a = &foo[0];
void *b = &foo[1];
std::cout<<(a < b);
Run Code Online (Sandbox Code Playgroud)

似乎没有具体说明.

有趣的是,这个子句在C++ 03中不存在并且在C++ 14中消失了,所以如果我们采用上面的例子并应用C++ 14的措辞,我会说3.1

  • 如果两个指针指向同一数组的不同元素或其子对象,则指向具有较高下标的元素的指针比较大.

将应用,作为ab指向同一数组的元素,即使它们已被转换为void *.请注意,3.1的措辞在C++ 11中几乎完全相同,但似乎被该void *子句覆盖了.

我的理解是对的吗?在C++ 11中添加并立即删除的奇怪子句有什么意义?或者它可能仍然存在,但是被标准的其他部分移动/隐含?

c++ pointers comparison-operators language-lawyer c++11

58
推荐指数
1
解决办法
2978
查看次数

"==="是什么意思?

我注意到有人使用PHP操作符===,我无法理解.我已经尝试了一个功能,它以疯狂的方式对应.

这个运算符的定义是什么?我甚至无法在PHP运算符的声明中找到它.

php operators comparison-operators identity-operator

55
推荐指数
5
解决办法
6万
查看次数