c++-(1.5==(1.0||1.5)?1:2)为什么返回2呢?

问题描述

(1.5==(1.0||1.5)?1:2)为什么返回2呢?

C++里的,好奇怪,(1.5==(1.0||1.5)?1:2)为什么返回2呢?

解决方案

1.0||1.5返回是bool值和1.5不相等,所以是2

解决方案二:

这句可以翻译为
if(1.5 == (1.0||1.5))
{
//表达式值为1
}else
{
//表达式值为2
}
注意 1.5 == (1.0||1.5)也就是 1.5 == 1 也就是false。1.0||1.5是一个布尔表达式,值为1
故而应该执行else,表达式值为2.

你特意说在C++中,其实在c中也是这样。在java中,这句话应该会报错。

解决方案三:

对于或逻辑1.5==1可以执行,不用判断后边的1.5==1.5,所以为2

解决方案四:

对于这样的复杂的运算符判断,要根据运算符优先级一步一步计算。因为括号的优先级最高,因此先执行(1.0||1.5),显然为真,也就是(1.0||1.5)=1,
然后计算1.5==1,结果为假,应该返回冒号后边的的表达式,所以结果为2

解决方案五:

首先,要搞明白三目运算符的运算顺序,其次再去运算结果。

解决方案六:

你那样写是有错误的,你可以试试这样写:(1.5==1.0)||(1.5==1.5)?1:2

时间: 2024-09-12 12:54:58

c++-(1.5==(1.0||1.5)?1:2)为什么返回2呢?的相关文章

重新取回值-VC++6.0 MFC 使用组合框如何返回取值的问题

问题描述 VC++6.0 MFC 使用组合框如何返回取值的问题 我用VC++6.0 MFC 做一个简单的个人信息系统登记系统,在登记记录时,对个性别男女用了组合框,登记时默认选项是男只要 m_ecombo.SetCurSel(0);这个函数里的变量只要是0就可以了,通赤数据库操作,追加进入数据库表了,但当你将这条记录调出修改时,同样需要这个组合框识别,这里我用了以下的操作 CRecEdit dlg; dlg.m_ecombo.InsertString(0,"男"); _dlg.m_ec

集成环信3.0,调用登陆时 emerror 返回对象是nil

问题描述 集成环信3.0,调用登陆时 emerror 返回对象是nil集成环信3.0,调用登陆时 emerror 返回对象是nil集成环信3.0,调用登陆时 emerror 返回对象是nil集成环信3.0,调用登陆时 emerror 返回对象是nil集成环信3.0,调用登陆时 emerror 返回对象是nil集成环信3.0,调用登陆时 emerror 返回对象是nil集成环信3.0,调用登陆时 emerror 返回对象是nil集成环信3.0,调用登陆时 emerror 返回对象是nil集成环信3

.NET 2.0 中FTP 出现远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。

问题描述 {System.Net.WebException:远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件).在System.Net.FtpWebRequest.SyncRequestCallback(Objectobj)在System.Net.FtpWebRequest.RequestCallback(Objectobj)在System.Net.CommandStream.Abort(Exceptione)在System.Net.FtpWebRequest.Finis

用ASP.NET 2.0设计网络在线投票系统

asp.net|设计|投票|网络|在线 一.系统功能设计和数据库设计 1.系统功能设计和数据库设计 1.1 系统功能设计 网络在线投票系统实现的功能比较简单,具体如下: ◎投票项目的管理: ◎添加投票的项目: ◎删除投票的项目: ◎对项目进行投票: ◎查看项目的投票情况. 1.2 数据库设计 本系统的数据库设计比较简单,只需要存储投票的信息即可.在SQL Server 2000中创建一个数据库,名称为"WebVoteDB",并在该数据库中创建投票项目表Votes.其中"Vot

MySQL 4.1.0 中文参考手册 --- 6.3 用于 SELECT 和 WHERE 子句的函数 (1)

mysql|select|参考|参考手册|函数|中文 MySQL 4.1.0 中文参考手册 --- 犬犬(心帆)翻译 MySQL Reference Manual for version 4.1.0-alpha. 6.3 用于 SELECT 和 WHERE 子句的函数 一个 SQL 语句中的 select_expression 或 where_definition 可由任何使用了下面所描述函数的表达式组成. 包含 NULL 的表达式总是得出一个 NULL 值结果,除非表达式中的操作和函数在文档中

MySQL 4.1.0 中文参考手册 --- 6.3 用于 SELECT 和 WHERE 子句的函数 (2)

mysql|select|参考|参考手册|函数|中文 MySQL 4.1.0 中文参考手册 --- 犬犬(心帆)翻译 MySQL Reference Manual for version 4.1.0-alpha. 6.3.4 日期和时间函数 对于每个类型的值范围以及日期和时间值有效指定格式,请查看章节 6.2.2 Date 和 Time 类型. 这里是一个使用日期函数的例子.下面的查询选择所有 date_col 值在最后 30 天内的记录. mysql> SELECT something FRO

Flash编程基础:As3.0概要

编程 随着一些相关资料对as3.0的介绍,有人可能认为它是另一种语言.它的根本改变在哪呢,它是什么呢?现在我们要放松一点.如果你熟知as2.0,那么它的变化并不是很大,甚至增加了一些命令你可以使用.     从我们第一眼看as3.0,它并不是一个全新的语言,它的架构要好于AS2.0,你将从FLASH8开始发现这些.任何东西都有自已的类和整洁的子类.类的继承关系看起来很复杂,但是它却是很容易理解.     主要的改变:     1.不在有_global范围了,但是你可以通过在预先的public,p

AS3.0概要–了解AS3.0的改变

随着一些相关资料对as3.0的介绍,有人可能认为它是另一种语言.它的根本改变在哪呢,它是什么呢?现在我们要放松一点.如果你熟知as2.0,那么它的变化并不是很大,甚至增加了一些命令你可以使用. 从我们第一眼看as3.0,它并不是一个全新的语言,它的架构要好于AS2.0,你将从FLASH8开始发现这些.任何东西都有自已的类和整洁的子类.类的继承关系看起来很复杂,但是它却是很容易理解. 主要的改变: 1.不在有_global范围了,但是你可以通过在预先的public,private和internal

As3.0 概要–了解AS3.0的改变

随着一些相关资料对as3.0的介绍,有人可能认为它是另一种语言.它的根本改变在哪呢,它是什么呢?现在我们要放松一点.如果你熟知as2.0,那么它的变化并不是很大,甚至增加了一些命令你可以使用. 从我们第一眼看as3.0,它并不是一个全新的语言,它的架构要好于AS2.0,你将从FLASH8开始发现这些.任何东西都有自已的类和整洁的子类.类的继承关系看起来很复杂,但是它却是很容易理解. 主要的改变: 1.不在有_global范围了,但是你可以通过在预先的public,private和internal