问题标签 [relational-operators]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 比较相似的数据类型无效?
我正在研究一个应用程序项目,以找出在德州扑克游戏中获胜的概率。
我的程序有下面给出的 3 种数据类型。
我在编写断言函数以检查洗牌后卡片是否重复时遇到了一个问题。错误说我正在比较无效的数据类型。错误消息的图像是:
所以从技术上讲,我仍在比较相似的数据类型,但它们是无效的。谁能帮我?
c - 即使没有错误,其他条件也不起作用
我正在使用 if else 条件在 c 中制作一个程序,它运行得非常好,没有任何错误,但它没有运行 else 条件(即,即使我给它输入了应该打印 else 条件的输入,它也给了我else if 条件而不是 else 条件),这里是代码
c - 有符号和无符号字符之间的比较
我几乎假设这是一个愚蠢的问题......但我真的找不到答案。所以我在这里问这个。
为了了解隐式类型转换,我在 C 上运行以下代码。
当我运行这个程序时,什么也没发生。
在第一次迭代时,我发现for循环的循环条件为假,所以程序立即退出了for循环。
但是,我不明白为什么。
据我所知,C 在分配或比较不同类型的变量时会进行隐式转换。所以我认为 on i = cnt - 2
,减法运算使值 -3,然后隐式转换为 i 分配值 253。
那么,条件不应该i < cnt
为真,因为(由于比较有符号和无符号字符而通过另一个隐式转换 cnt)253 小于 255?
如果不是,为什么这是假的?有什么我错过的还是有一些我不知道的例外?
c - C 关系运算符 if-else
n 的 if-else 应该打印“是”
但输出是“否”
为什么0<n<1000
不起作用
python - 我无法获得任何类型的输出
这是我的python代码:我最后得到的唯一输出是“真” 为什么我没有收到其他人的输出?请帮忙。我在 Visual Studio 代码上使用 jupyter notebook。内核:Python 3.9 64 位
c++ - 如何比较 const char* 字符串?
首先,考虑这个例子:
我期望什么:由于 "123" 是 a const char*
,我希望这些字符串的 ADDRESSES (就像其中一个答案所说的那样)进行比较。
...因为
!=
并且==
只会比较这些字符串的基地址。不是字符串本身的内容。
但输出仍然是1
. 好吧,我们实际上不知道如何比较两个纯右值对象的地址(或者至少我不明白它是如何完成的)。所以让我们将这些字符串声明为变量,看看会发生什么:
输出仍然是1
. 所以const char*
弦不会衰减?或者编译器设法进行一些优化并只为一个字符串分配内存?好的,让我们尽量避免它们:
结果还是一样。这让我觉得const char*
真的不会腐烂。但这并没有让我的生活变得更简单。那么const char*
s 是如何比较的呢?
为什么这里的输出是1
:
a
小于b
,就字典比较而言,但这里a
更大。那么如何const char*
实现 s 的比较呢?
string - 在例如 CSS 中是否有字符串运算符(例如 $=、^=)的(与语言无关的)名称?
有一组运算符,例如在 CSS 属性选择器或 youtube-dl 的格式选择语法中使用,类似于更传统的关系运算符,例如 ==,但选择开头、结尾等。
具体来说,我在想运算符*=, ^=, $=
和不太常见~=, |=
的语法本身(例如$
,在字符串的开头)可能源于正则表达式(或者可能更早),但与我们可以分组==, <=, >, etc.
为“关系运算符”的方式相同,是否存在提到的字符串运算符的名称?
c - 关系运算符
我对test
函数的结果感到困惑,-1
如下所示。
0x0135fb00
now 是我的 da 值和 a 的地址
0x0135faf4
现在是我的 db 值和 b 的地址
据我所知,如果为真,则关系运算符返回 1,如果为假,则返回 0,所以在这种情况下,我们应该:
*da > *db --> 1
因为da
(a 的地址)的值大于db
(b 的地址)的值。
*da < *db --> 0
因为da
(a 的地址)的值不小于db
(b 的地址)的值。
所以 1-0 是 1。
只是为了说明,我通过调试器比较 da 的值和 db 的值得出了这个结论(我使用 Visual Studio 和默认的 C 编译器)。我错过了什么?
PS:我在GNU 官方网站上遇到过这段代码。
c++ - 将无符号整数与负文字进行比较
我有这个简单的 C 程序。
当我运行它时输出 -
在Godbolt 中重新创建
我的问题是为什么foo(99)
返回 true 但bar(99)
返回 false。
bar
对我来说,返回 false是有道理的。为简单起见,假设 long 是 8 位,然后(使用二进制补码作为有符号值):
所以很明显 CMP 指令会看到 1111 1110 更大并返回 false。
但我不明白函数的幕后发生了什么foo
。的程序集foo
似乎硬编码为总是 return mov eax,0x1
。我本来希望foo
做类似的事情bar
。这里发生了什么?
c++ - 如果数字不在两个值之间,为什么它会显示总和?
如果数字小于或等于 1 或 1000,我希望它不显示总和的结果。我不知道 usingif
是否是最好的方法,但这就是我尝试使用的方法,我真的不明白为什么它不起作用。||
我也尝试用and编写条件&&
,但那些也不起作用。