C / C ++三元运算符中一些有趣的观察

晓晓 133 0

搬瓦工官网(国内无法打开,需要梯子)https://bandwagonhost.com
搬瓦工官网中国镜像站https://bwh81.net(搬瓦工官方网站,放心访问)
搬瓦工官方中文网https://bwh86.net
搬瓦工官网所有方案以及库存监控页面https://bwh86.net/monitor
最新搬瓦工最大优惠力度优惠码(循环优惠6.58%):BWHNCXNVXV
搬瓦工新用户注册和图文购买教程点击查看

首先大家可以先不看结果,预测以下C ++程序的输出:

大家肯定觉得两个打印语句的输出都一样。但是,输出将是:

First character 1

Second character 49

为什么第二个语句打印49?还请大家阅读三元表达式:

三元运算符(C / C ++):

三元运算符的格式如下:

exp 1?exp 2:exp 3

表达式exp 1将始终被求值。exp 2和exp 3的执行取决于exp 1的结果。如果exp 1的结果不为零,则将评估exp 2,否则将评估exp 3。

副作用:

exp 1的任何副作用将在执行exp 2或exp 3之前立即进行评估和更新。换句话说,在三元表达式的条件评估之后存在一个序列点。如果exp 2或exp 3有副作用,则仅评估其中之一。

返回类型:

这是另一个有趣的事实。三元运算符具有返回类型。返回类型取决于exp 2, 根据常规\重载转换规则,exp 3可转换为exp 2。如果它们不可转换,则编译器将引发错误。请参阅以下示例:

以下程序编译没有任何错误。三元表达式的返回类型应为float(如exp 2的返回类型),而exp 3(即字面 零-int类型)可以隐式转换为float。

以下程序将无法编译,因为编译器无法找到三进制表达式的返回类型,或者在exp 2(char数组)和exp 3(int)之间不存在隐式转换。

以下程序可以编译,但在运行时失败。三元表达式的返回类型绑定到类型(char *),但表达式返回int,因此程序失败。从字面上看,该程序尝试在运行时在第0个地址打印字符串。

我们可以观察到exp 2被视为输出类型,并且exp 3将在运行时转换为exp 2。如果转换是隐式的,则编译器将插入存根进行转换。如果转换是显式的,则编译器将引发错误。如果有任何编译器未捕获到此类错误,则程序可能会在运行时失败。

最佳实践:

C ++类型系统的强大功能避免了此类错误。确保表达式exp 2和exp 3返回相同的类型或至少安全可转换的类型。我们可以看到其他习惯用法,例如C ++ convert union以进行安全转换。

免费领取学习资料以及教程,大家可以查看下方gif:

搬瓦工机房方案整理

搬瓦工目前提供了4个方案,包括搬瓦工KVM方案搬瓦工CN2 GT方案搬瓦工CN2 GIA-E方案搬瓦工香港方案,每种方案有多种套餐配置,详细的配置和价格整理如下:
套餐名称 CPU 内存大小 硬盘容量 每月流量 带宽 价格/年 购买链接
搬瓦工CN2-E限量版(搬瓦工补货通知群(禁言,仅推送):903230558)
CN2 GIA LIMITED EDITION 1核 1 GB 10 GB 500 GB 1 Gbps $89.99 立即购买
搬瓦工CN2 GT方案
CN2 1核 1024 MB 20 GB 1000 GB 1 Gbps $49.99 立即购买
CN2 1核 2048 MB 40 GB 2000 GB 1 Gbps $99.99 立即购买
CN2 2核 4096 MB 80 GB 3000 GB 1 Gbps $199.99 立即购买
CN2 2核 8 GB 160 GB 5000 GB 1 Gbps $399.99 立即购买
CN2 3核 16 GB 320 GB 8000 GB 1 Gbps $799.99 立即购买
CN2大流量 3核 16 GB 320 GB 12000 GB 1 Gbps $899.99 立即购买
CN2大流量 3核 16 GB 320 GB 16000 GB 1 Gbps $1299.99 立即购买
搬瓦工CN2 GIA-E方案(可选搬瓦工DC9 CN2 GIA,搬瓦工DC6 CN2 GIA,搬瓦工日本大阪软银线路)
CN2 GIA ECOMMERCE 2核 1 GB 20 GB 1000 GB 2.5 Gbps $169.99 立即购买
CN2 GIA ECOMMERCE 3核 2 GB 40 GB 2000 GB 2.5 Gbps $299.99 立即购买
CN2 GIA ECOMMERCE 4核 4 GB 80 GB 3000 GB 2.5 Gbps $549.99 立即购买
CN2 GIA ECOMMERCE 6核 8 GB 160 GB 5000 GB 5 Gbps $879.99 立即购买
CN2 GIA ECOMMERCE 8核 16 GB 320 GB 8000 GB 5 Gbps $1599.99 立即购买
CN2 GIA ECOMMERCE 10核 32 GB 640 GB 10000 GB 10 Gbps $2759.99 立即购买
CN2 GIA ECOMMERCE 12核 64 GB 1280 GB 12000 GB 10 Gbps $5399.99 立即购买
搬瓦工香港方案
香港CN2 GIA 2核 2048 MB 40 GB 500 GB 1 Gbps $899.99 立即购买
香港CN2 GIA 4核 4096 MB 80 GB 1000 GB 1 Gbps $1559.99 立即购买
香港CN2 GIA 6核 8192 MB 160 GB 2000 GB 1 Gbps $2999.99 立即购买
香港CN2 GIA 6核 16384 MB 320 GB 4000 GB 1 Gbps $5899.99 立即购买
搬瓦工日本方案
日本CN2 GIA 2核 2048 MB 40 GB 500 GB 1.2 Gbps $899.99 立即购买
日本CN2 GIA 4核 4096 MB 80 GB 1000 GB 1.2 Gbps $1559.99 立即购买
日本CN2 GIA 6核 8192 MB 160 GB 2000 GB 1.2 Gbps $2999.99 立即购买
日本CN2 GIA 6核 16384 MB 320 GB 4000 GB 1.2 Gbps $5899.99 立即购买
搬瓦工KVM方案
KVM 2核 1024 MB 20 GB 1 TB 1 Gbps $49.99 立即购买
KVM 3核 2 GB 40 GB 2 TB 1 Gbps $99.99 立即购买
KVM 4核 4 GB 80 GB 3 TB 1 Gbps $199.99 立即购买
KVM 5核 8 GB 160 GB 4 TB 1 Gbps $399.99 立即购买
KVM 6核 16 GB 320 GB 5 TB 1 Gbps $799.99 立即购买
KVM 7核 24 GB 480GB 6 TB 1 Gbps $1,199.99 立即购买

标签: 国外云服务器 香港服务器 美国服务器 搬瓦工VPS

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~