(八十五)?: 运算符

简介:

?:运算符与之前的运算符不同,他的格式是这样:

表达式a?值1:值2

意思是:

假如表达式a的值为真,输出值1(即本表达式的值为值1);

假如表达式a的值为假,输出值2(即本表达式的值为值2);

注意,第一个是英文字符问号,第二个是英文字符冒号。

 

如代码:

#include<iostream>

int main()
{
	using namespace std;
	int a;
	for (int i = 0;i < 2;i++)
	{
		cout << "请输入第一次的值:";
		cin >> a;
		cout << "输出:"<<((a < 6) ? 1 : 10) << endl;
	}

	system("Pause");
	return 0;
}

输出:


请输入第一次的值:3
输出:1
请输入第一次的值:111
输出:10
请按任意键继续. . .

?:类似if else:

if(表达式a){值1;}else{值2;}

事实上,也可以像写if这样写代码;


#include<iostream>

int main()
{
	using namespace std;
	int a,i;
	for (i = 0;i < 2;i++)
	{
		cin >> a;
		a < 5 ? cout << a << endl : cout << a + 5 << endl;	//像if else那样写?:
		cout << endl;
	}
	system("Pause");
	return 0;
}

输出:


3
3

10
15

请按任意键继续. . .

?:相对if else的优点:

①可以直接输出值给一个更大的表达式。而if需要额外声明一个变量才可以。

 

②在面对比较短小简单的代码时候,比if else更简单。

 

③每个?可以理解为一个if,特备是在多个?存在的时候。如代码:

#include<iostream>
#include<string>

int main()
{
	using namespace std;
	string a[2] = { "abc","def" };
	char *b = "+";

	for (int i = 0;i < 3;i++)
		cout << ((i < 2) ? !i ? a[i] : b : a[1]);
	system("pause");
	return 0;
}

输出:


abc+def请按任意键继续. . .

逻辑为:

i=0;

①先判断i<2。满足,排除a[1]

②再判断!i。满足,排除b

③执行a[i];结束

i=1;

①先判断i<2。满足,排除a[1]

②再判断!i,不满足,执行b;结束

i=2;

①先判断i<2,不满足,执行a[1];

 

解释:

a?b?A:B:C的逻辑是:a?(b?A:B):C

①先判断a,不满足,则执行C;满足执行(b?A:B);

②判断b,不满足,执行B;满足,执行(A),于是只有A了,执行之;

③依次类推,假如a?b?c?A:B:C:D,a不满足则D,然后b不满足则C;再然后c不满足则B,最后是A。

代码验证之:

#include<iostream>
#include<string>

int main()
{
	using namespace std;
	//a?b?c?A:B:C:D

	//可能1:
	//①a不满足,D;a满足排除D,执行(b?c?A:B:C)
	//②b不满足,执行C;b满足,执行c?A:B
	//③c不满足,执行B;c满足,执行A

	//可能2:
	//①c满足,执行A;a不满足,下一行;
	//②b满足,执行B;b不满足,下一行;
	//③a满足,执行C;a不满足,D;

	//验证方法b不满足,a不满足,c满足。
	//可能1:因为a不满足,执行D;
	//可能2:因为c满足,执行A

	string A, B, C, D;
	int a, b, c;
	A = "A";
	B = "B";
	C = "C";
	D = "D";
	a = 1;
	b = 2;
	c = 3;

	cout << ((a != 1) ? (b != 2) ? (c == 3) ? A : B : C : D )<< endl;	//a不满足,b不满足,c满足

	system("pause");
	return 0;
}

输出:


D
请按任意键继续. . .

验证成功。

从左边开始验证,不满足则取右边的,满足则继续验证下一个,依次类推。直到全部满足,执行最里面“:”左边的表达式。


目录
相关文章
|
6月前
|
Python
python一元运算符的应用
【4月更文挑战第12天】Python的一元运算符包括正号(+), 负号(-), 按位取反(~), 取绝对值(abs())和类型转换(int(), float(), str())。例如:`+a`使数值变正,`-a`变为负数,`~a`为按位取反,`abs(a)`获取绝对值,而`int(a)`, `float(a)`, `str(a)`则用于类型转换。示例代码展示了这些运算符的使用效果。
55 0
|
6月前
|
Python 容器
Python 教程之运算符(10)—— Inplace 运算符
Python 教程之运算符(10)—— Inplace 运算符
61 0
|
Python
python之算术运算符,复合运算符,逻辑运算符,比较运算符的定义及其使用方法
python之算术运算符,复合运算符,逻辑运算符,比较运算符的定义及其使用方法
|
5月前
|
算法 Java
炸裂!Java 基本语法的运算符世界,等你来探索!算术运算符特辑
【6月更文挑战第14天】Java中的算术运算符是基础关键,如加法&quot;+&quot;用于数字相加和字符串拼接,减法&quot;-&quot;求差,乘法&quot;*&quot;相乘,除法&quot;/&quot;注意整数除法会舍去小数,浮点数则保留,取模&quot;%&quot;)返回除法余数。熟练掌握这些运算符能提升编程效率,构建复杂逻辑。继续探索Java运算符世界,创造更多精彩程序!
31 1
|
6月前
|
Python
Python基础教程——运算符
Python基础教程——运算符
|
6月前
|
存储 安全 程序员
C语言程序设计——强制类型转换运算符
C语言程序设计——强制类型转换运算符
|
6月前
|
存储 Python 容器
Python系列(12)—— 一元运算符
Python系列(12)—— 一元运算符
|
6月前
|
Python
详解 Python 的二元算术运算,为什么说减法只是语法糖?
详解 Python 的二元算术运算,为什么说减法只是语法糖?
48 0
|
机器学习/深度学习 SQL 算法
用Python实现复数的四则运算
用Python实现复数的四则运算
|
SQL 算法 Java
【Go语言刷题篇】Go从0到入门2:类型转换、字符求和、运算符运算(加减乘除取余比较符)练习
本系列文章采用牛客的核心代码模式进行案例代码提供,帮助大家从0到入门的学习过程中进行配套的刷题~
【Go语言刷题篇】Go从0到入门2:类型转换、字符求和、运算符运算(加减乘除取余比较符)练习