首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的三元运算符会给if一个不同的结果?

三元运算符是一种简化if-else语句的表达式,它由三个部分组成:条件表达式、真值表达式和假值表达式。它的语法形式为:条件表达式 ? 真值表达式 : 假值表达式。

当使用三元运算符时,它会根据条件表达式的结果来选择执行真值表达式还是假值表达式。如果条件表达式的结果为真,则执行真值表达式;如果条件表达式的结果为假,则执行假值表达式。

可能导致三元运算符给if语句一个不同结果的原因有以下几种情况:

  1. 条件表达式的结果不是布尔类型:三元运算符要求条件表达式的结果必须是布尔类型(true或false)。如果条件表达式的结果不是布尔类型,那么它会被隐式转换为布尔类型。在这个转换过程中,一些非布尔类型的值可能会被转换为true或false,导致条件表达式的结果与预期不符。
  2. 真值表达式或假值表达式中包含副作用:如果真值表达式或假值表达式中包含有副作用的代码,例如修改变量的值或调用函数,那么这些副作用可能会导致if语句的结果与三元运算符的结果不一致。这是因为if语句会根据条件表达式的结果来选择执行代码块,而三元运算符会直接执行真值表达式或假值表达式。
  3. 真值表达式和假值表达式的结果类型不一致:如果真值表达式和假值表达式的结果类型不一致,那么三元运算符会根据条件表达式的结果来选择执行不同类型的表达式。这可能导致if语句的结果与三元运算符的结果不一致。

综上所述,当三元运算符给if语句一个不同的结果时,可能是由于条件表达式的结果不是布尔类型、真值表达式或假值表达式中包含副作用,或者真值表达式和假值表达式的结果类型不一致等原因导致的。在使用三元运算符时,需要确保条件表达式的结果是布尔类型,并且真值表达式和假值表达式的结果类型一致,避免出现不一致的结果。

(注:本回答中没有提及云计算、IT互联网领域的名词词汇和腾讯云相关产品,因为问题与这些内容无关。)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

概率统计——为什么条件概率结果总和直觉不同

所以另一个孩子也是女孩概率是1/3。 这个答案计算过程没什么问题,想大家应该都能看明白,但是不知道会有多少人觉得奇怪。为什么答案不是 1/2 呢?难道两个孩子性别不是独立吗?...不同是,假设有一天我们在公园碰见了这一对夫妻。不过,与此同时,夫妻还带了一个孩子。这个孩子是一个女孩,那么,请问,另一个孩子也是女孩概率是多大? 答案是 1/3 呢还是 1/2 呢?...我们之前一通分析,用上各种公式进行计算,得到结果明明是1/3,为什么这里就变成 1/2 了呢?这两道题难道不是一样吗?...我们遇见一个女孩条件下,两个都是女孩概率是 ? 这里潜在信息是,我们在公园遇见一个孩子,他是男是女概率是不同。我们遇见了女孩,会改变剩下一个孩子是女孩概率。...这样理解都行得通,但还是没有解决我们之前疑惑,为什么看起来完全一样两件事,得到结果不同呢?就因为我们看到了其中一个孩子吗?可是我们看到孩子,与孩子性别的概率应该无关才对。

1.2K20

#PY小贴士# PyCharm为什么执行结果很诡异?

今天讲这个小问题,没有用过 PyCharm 同学会完全不知所云,但用过的人,可能有一半以上概率会遇到这个算不上 bug 但也可能让人迷惑坑。...情况就是:当你写了一段代码,点击 PyCharm 右上角绿色小三角运行程序时,发现结果跟你预期完全不相干。然后,无论你怎么修改代码,结果丝毫不会改变。甚至你一怒之下删光所有代码,竟然仍有输出!...其实原因也很简单:在 PyCharm里面,切换了当前编辑 py 文件后,默认运行代码文件是不会跟着变。这时候用快捷键或者点运行按钮执行都还是一开始设定那个代码文件。 ?...新手学习经常会依次写好几个习题,于是会发生修改了代码,但执行效果没变化情况。一来一回就把人给弄糊涂了。 一个简单方法,就是用右键点击空白处运行代码: ?...不过这样一来,如果你不是写单个文件代码,而是开发有固定执行入口项目,就反倒不方便了。所以具体就看你自己需要了。 ?

1.3K20
  • C++ sizeof()运算符参数为指针和数组为什么不同

    sizeof()参数为指针和数组 C++或C语言中,都可以使用sizeof()运算符来计算数组字节大小,除此之外,在C++和C语言中,都可以使用一个指向数组第一个元素内存地址指针来引用数组,因此...,如果要计算数组字节大小,或长度,传递数组本身或传递指向数组指针给sizeof()运算符似乎都是可以,实际上则不然,二者有本质上区别。.../ 计算arr大小 int n = sizeof(arr); // 定义一个指针指向数组arr int *p = arr; // 将指针p传递给sizeof()...和m值是不同!...这是为什么呢? 不同原因 这主要是因为当sizeof()运算符参数是数组本身,将计算是数组大小,而如果传递是指针作为参数,那计算便是指针大小,而不是整个数组

    16121

    LIME:可以解释任何一个分类模型预测结果

    LIME:可以解释任何一个分类模型预测结果 ? image-20210630115214018 论文标题:“Why Should I Trust You?”...因此,我们需要能够对模型预测进行解释,从而帮助我们来判断模型是否可靠。 何谓“解释一个预测结果”,作者定义是:通过文本或者视觉方式来呈现样本具体组成部分跟模型预测结果之间关系。...LIME流程图 重点注意: 这里g和f使用训练数据是不同,但我们希望他们输出结果是逼近。 我们是针对一个样本进行解释,即给定一个样本,解释为什么模型这样预测。 先“转换”,再“转换回来”。...g各个w可以可视化出来,看出不同特征贡献程度。比如下面的例子: ? 通过对两个模型,在同一个样本上解释,我们可以发现第一个模型解释性更好,因为找到了正确特征。...而第二个模型找到特征是错误,这是由于训练集中偏差导致。 对于图像分类问题,也是类似的: ? 上图结果,是通过对g正权重对应区域进行高亮。从而可以解释为什么模型预测出了相应类别。

    1.6K30

    HttpURLConnection调用get方法碰到奇怪编码问题--不同方式调用同一个方法竟然有不同结果

    今天在调用某接口查询企业名称时候碰到奇怪问题。 在页面上输入拼音能搜索到数据,输入汉字则不行。 询问了对方技术人员,他说内容是空,这就奇怪了,后台明明已经接收到“浙江”这个值了。...它们之间区别仅仅是调用路径不同一个是从单元测试调用一个是从页面上调用。...页面调用 通过页面ajax调用接口: 参数也能正常传到Controller,问题是sendUrl已经在方法里写死了,却得到了不一样结果: /** * 获取公司列表...这是通过单元测试方法发送请求,编码没有问题: 这是通过页面发送请求,编码就有问题了: 不同方式调用同一个方法,为什么会有这样区别呢?真是搞不明白。。。...但是单元测试时候,为什么不编码也可以呢?而从页面上通过Controller调用就有编码问题? 这个疑问还没解开。。。 如果有大神知道原因,请不吝赐教,谢谢!

    1.4K10

    MYSQL 一个特殊需求在不同MYSQL配置产生不同结果 与 update 0 是否需要应用程序判断

    最近有一个需求关于数据清理需求,但是这个需求里面有一个部分有一个部分是特殊,也就是在数据清理中,是需要进行数据导出和导入,并确定在导入和导出过程中,导出数据在导出到清理整个过程中中不能被改变...配置中会产生什么样结果不同结果开发是否能接受问题。...这里需要在不同情况下来分析,同样设置给应用程序带来不同问题。 这里先从互联网方案来说,死锁探测为0 innodb_lock_wait_timeout = 3 当然有的地方更短设置成1秒。...具体什么成因这里就不讨论了,同时这里还有一个不同就是隔离级别,我们在每次测试使用不同隔离级别来看看会有什么影响。...数据还在情况下,你会获得update 对应结果结果,如果相关行不在情况下,获得结果也是UPDATE 0 结果

    11410

    为什么在 Eclipse 中,运行本程序却是另外一个程序结果

    文章目录 前言 一、错误产生场景 1.1、执行一个无误 Java 程序(即产生结果程序) 1.2、执行未出结果 Java 程序 二、错误处理 总结 ---- 前言 你使用 Eclipse 敲代码时候...,有没有遇到过这样一种情况,明明点击运行本程序结果却是另外一个程序结果?...这是为什么呢?话不多说,我们从实际案例来分析错误原因。...---- 一、错误产生场景 1.1、执行一个无误 Java 程序(即产生结果程序) 首先我们先执行一个 Java 程序SwitchToIfElseWithSwitch如下: package review3...要做一个细心程序员哦! ---- 是白鹿,一个不懈奋斗程序猿。望本文能对你有所裨益,欢迎大家一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家支持!

    2.6K41

    为什么要创建一个不能被实例化

    但如果有一天,你发现写了这样一个类: class People: def say(self): print(f'叫做:{self.name}') def __new...一个不能被初始化类,有什么用? 这就要引入我们今天讨论一种设计模式——混入(Mixins)。 Python 由于多继承原因,可能会出现钻石继承[1]又叫菱形继承。...每个 Mixins 类只有一个或者少数几个方法。不同 Mixin 方法互不重叠。...('kingname', 28) pm = People('pm', 25) kingname > pm 显然,这样写会报错,因为两个类实例是不能比较大小: 但在现实生活中,当我们说 某人比另一个人大时...但是 在写 Mixins 类时候,我们不会写__init__方法,也不会写类属性。并且 Mixin 类中方法看起来更像是工具方法。 我们可以写很多个 Mixin 类,然后用一个子类去继承他们。

    3.4K10

    为什么 Python、Go 和 Rust 都不支持三元运算符

    在编程时,我们经常要作条件判断,并根据条件结果选择执行不同语句块。...本文将主要分析 Python 在设计条件选择语法时过程,科普为什么它会采用现今与众不同实现方案,同时,我们也将考察为什么其它语言也要抛弃传统三元运算符。...在开篇之前,再声明一下:就像“Python为什么”系列大部分文章一样,本文关注仅是一个很小语法点,但它并不是“茴香豆有几种写法”那种毫无意义的话题。...总体而言,Python 设计者非常看重可读性与可维护性,不采用三元运算符而创造条件表达式语法,这是一个经过了开放讨论、谨慎评估与权衡取舍结果。 Go、Rust 为什么不支持三元运算符?...为什么三元运算符在 Rust 是多余呢?

    4.3K10

    AI看脸就知道性取向,不服气做了一个实验,结果……

    斯坦福有一个看脸预测性取向AI,如同相面一般,根据面部特征就能判断一个人是直是弯,而且准确度喜人: 男生81%,女生74%。 研究结果一公布,网友沸腾。也有不少人怀疑:AI哪有这么准?...这个结果,又引来网友们一波激烈讨论。这一次,大家关注点不仅仅是准确率本身,还有少年在复现研究中展现出对AI观察: 凭什么说是直男 AI到底是靠哪些线索,来判断人类性向?...为了做这些探索,约翰复现了一个深度神经网络模型和一个基于面部形态学(FM)模型,还从约会网站中抓取了50万张照片,从中选取2万多张,做成性别、取向平衡分布数据集。...然后作者根据面部特征训练了一个回归模型来预测性取向。2017年斯坦福大学研究就是这么做。当时,Kosinski教授把人脸所有相同性取向脸合成了4张图片: ?...准确率91%结果会误认9%直男为同性恋,也就是85人。 该算法还会将9%同性恋者视为直男,也就是会识别出45人为同性恋。结果在130个“同性恋”中,有三分之二的人其实并不是同性恋。

    42030

    Python中三目运算符三元表达式)

    参考链接: Python中三元运算符 Python中三目运算符三元表达式)  一般支持三目运算符语言(如C语言)语法格式一般是这样:  判断条件(返回布尔值)?...为真时结果:为假时结果  比如:  x = x%2==1 ? x+1:x;  python并不支持? :这种符号所表达先判断再选择含义,但仍然有相应语法支持:  1....Python 语法支持  为真时结果 if 判断条件 else 为假时结果(注意,没有冒号)  顺序略有不同,  x = x+1 if x%2==1 else x  在比如我们欲实现一个基础版本(...递归版本)斐波那契数列:  def fn(n):     return n if n < 2 else fn(n-1)+fn(n-2)  Python 中三目运算符目的是得到一个结果,未必就是将该结果...return,或者进行简单变量赋值,如下:  l = [] l.append(1 if x>=1. else 0)                     # 将会给形式带来巨大简洁  一个应用实例请见

    1.2K30

    不服气做了一个实验,结果……

    导读:斯坦福有一个看脸预测性取向AI,如同相面一般,根据面部特征就能判断一个人是直是弯,而且准确度喜人: 男生81%,女生74%。 研究结果一公布,网友沸腾。也有不少人怀疑:AI哪有这么准?...这个结果,又引来网友们一波激烈讨论。这一次,大家关注点不仅仅是准确率本身,还有少年在复现研究中展现出对AI观察: 01 凭什么说是直男 AI到底是靠哪些线索,来判断人类性向?...为了做这些探索,约翰复现了一个深度神经网络模型和一个基于面部形态学(FM)模型,还从约会网站中抓取了50万张照片,从中选取2万多张,做成性别、取向平衡分布数据集。...然后作者根据面部特征训练了一个回归模型来预测性取向。2017年斯坦福大学研究就是这么做。当时,Kosinski教授把人脸所有相同性取向脸合成了4张图片: ?...准确率91%结果会误认9%直男为同性恋,也就是85人。 该算法还会将9%同性恋者视为直男,也就是会识别出45人为同性恋。结果在130个“同性恋”中,有三分之二的人其实并不是同性恋。

    63760

    阶段01Java基础day03JAVA基础

    03.03_Java语言基础(位运算符基本用法1) A:位运算符有哪些 B:案例演示 位运算符基本用法1 &,|,^,~ 用法 &:有0则0 |:有1则1 ^:相同则0,不同则1 ~...B:面试题: 请自己实现两个整数变量交换 注意:以后讲课过程中,没有明确指定数据类型,默认int类型。...1 >>>:无符号右移 无论最高位是0还是1,左边补齐0 03.06_Java语言基础(三元运算符基本用法) A:三元运算符格式 (关系表达式) ?...03.15_Java语言基础(if语句格式2和三元相互转换问题) A:案例演示 if语句和三元运算符完成同一个效果 B:案例演示 if语句和三元运算符区别 三元运算符实现,都可以采用...什么时候if语句实现不能用三元改进呢? 当if语句控制操作是一个输出语句时候就不能。 为什么呢?因为三元运算符一个运算符运算符操作完毕就应该有一个结果,而不是一个输出。

    61410

    Java基础笔记03

    有1则1 ^:相同则0,不同则1 ~:按位取反 03.04_Java语言基础(位异或运算符特点及面试题)(掌握) A:案例演示 位异或运算符特点 ^特点:一个数据对另一个数据位异或两次,该数本身不变...B:面试题: 请自己实现两个整数变量交换 注意:以后讲课过程中,没有明确指定数据类型,默认int类型。...最高为是1,左边补齐1 ">>>":无符号右移 无论最高位是0还是1,左边补齐0 最有效率算出2 * 8结果 03.06_Java语言基础(三元运算符基本用法)(掌握) A:三元运算符格式...03.15_Java语言基础(if语句格式2和三元相互转换问题)(掌握) A:案例演示 if语句和三元运算符完成同一个效果 B:案例演示 if语句和三元运算符区别 三元运算符实现,都可以采用...什么时候if语句实现不能用三元改进呢? 当if语句控制操作是一个输出语句时候就不能。 为什么呢?因为三元运算符一个运算符运算符操作完毕就应该有一个结果,而不是一个输出。

    68480

    Java基础第三天学习笔记

    * &:有0则0 * |:有1则1 * ^:相同则0,不同则1 * ~:按位取反 03.04_Java语言基础(位异或运算符特点及面试题)(掌握) * A:案例演示 * 位异或运算符特点...* B:面试题: * 请自己实现两个整数变量交换 * 注意:以后讲课过程中,没有明确指定数据类型,默认int类型。...0;最高为是1,左边补齐1 * >>>:无符号右移 无论最高位是0还是1,左边补齐0 * 最有效率算出2 * 8结果 03.06_Java语言基础(三元运算符基本用法)(掌握) * A:三元运算符格式...03.15_Java语言基础(if语句格式2和三元相互转换问题)(掌握) * A:案例演示 * if语句和三元运算符完成同一个效果 * B:案例演示 * if语句和三元运算符区别 * 三元运算符实现...* 什么时候if语句实现不能用三元改进呢? * 当if语句控制操作是一个输出语句时候就不能。 * 为什么呢?因为三元运算符一个运算符运算符操作完毕就应该有一个结果,而不是一个输出。

    80470

    Java运算符-三元运算符,这你必须得会!

    摘要三元运算符是一种具有简洁语法特性运算符,可以根据某个条件真假来返回两个值中一个。它相比于传统if-else语句更加简洁,适用于一些简单条件判断。正文简介三元运算符使用格式为:条件 ?...在这个例子中,由于a值大于b,所以最大值为10。因此,控制台将输出"最大值为:10"。应用场景案例三元运算符在很多场景中都有广泛应用,例如:求两个数最大值或最小值。根据条件判断返回不同结果。...然后使用三元运算符来比较a和b大小,如果a大于b,则将a值赋给变量max;否则将b值赋给变量max。最后打印出最大值max。运行结果为:"最大值为:10",因为a值大于b,所以最大值为a。...执行结果:全文小结本文介绍了Java中三元运算符基本使用方法,通过源代码解析、应用场景案例、优缺点分析等方式深入了解它使用。...三元运算符能够简化条件判断编写和提高代码可读性,但只适用于简单条件判断。总结三元运算符是Java开发中常用一种运算符,能够根据条件真假返回两个值中一个

    14421

    通俗易懂PHP基础【4-运算符与表达式】

    $x $x为假时为真 同一个逻辑结构两个运算符号之间却有着不同优先级,and与or 优先级要高于||与 &&。 测试代码了解一下逻辑运算: 运行结果: ? 5 字符串运算符 字符串运算是用于将字符串拼接起来。不同于其他编程语言,其他编程语言拼接字符串使用加号(+),PHP拼接字符串运算符号使用点(.)。..."; //先自增,再执行输出,所以$x值会变为7 ?> 运行结果: ? 8 其他运算符 三元运算符 所谓三元运算符,就是根据一个表达式成立与否,去执行两件事。...举个例子,如果明天是周末,就在家看书,不然只能上班了。 用三元运算符,来表达就是,如下: 表达式能成立,执行?之后事情,不成立,就执行:后事情。 <?...我们通过编写一条一条语句来组织我们代码。一个语句可以是一个变量,一个函数,一个运算符。我们之前写测试代码,一行一行以分号(;)结束语句,都是一个个表达式。

    85130

    Numpy模块中where函数

    前言 学习过编程语言的话一定知道一个称为"三目运算符"(三元表达式)东西,一般来说我们可以把它看成是一个简单"if-else"语句。...如果是true,就把表达式1作为结果。 如果是false,就把表达式2作为结果。 这里为什么要提一下其它编程语言中三目表达式呢?...我们知道在java中"三目运算符"是对"if-else"语句一个简化,如果能用"三目运算符"实现一定能用"if-else"语句来实现,当然它们肯定是有区别的,由于"三目运算符"是一个运算符,所以它必须返回一个结果而不是输出...,但是"if-else"返回结果不仅可以是一个结果还可以是一个输出。...不过在Python中虽然可以称为"三目运算符"或者"三元表达式",但是认为在Python中仅仅能称为"三元表达式",因为此时返回结果只能是一个输出,而且单单看Python中实现"三元表达式"语句,其实怎么看都像是

    1.5K10

    N 个值得一看后端代码片段

    点赞再看,Java进阶一大半三元运算符大家肯定有使用过,国外论坛有这么一个问题:Ternary operator: bad or good practice?三元运算符:坏习惯还是好习惯?...最高赞回答是一个名为Ted Dziuba老哥说。为了便于阅读,如果三元组适合一行 80 个字符,才会使用它。...这实际上是Java语言一个特性,对于实例变量即成员变量,如果是基本数据类型都会有一个默认值。不同基本类型默认值不同,我们看看以下各种基本类型默认值。...程序执行结果:true2. 程序运算2.1 类型提升三元运算符坑,相信不少南友遇到过。。。我们来看看三元运算符是什么?Java中三元运算符是一种简洁条件表达式工具,其语法格式为:条件 ?...new Double(1.0) : new Double(2.0);三元运算符一个非常关键细节就是类型统一化。

    1331210
    领券