“?”在编程语言中为三目运算符,表示判断,可代替简单的if...else...语句。
“:”前后表示不同条件下的返回值。
三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。
三目运算格式为:<表达式1> ? <表达式2> : <表达式3>。
"?"运算符的含义是:先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。
一般常用于简化if...else...的写法。例如:
意为:若a<0则b=0,否则b=1,
这样就大大减小了代码量。
扩展资料:
以下是关于条件运算符的几点说明:
(1)表达式1是关系表达式或逻辑表达式,用于描述条件,表达式2和表达式3可以是常量,变量或表达式.如:
(x==y)?'Y':'N'
(d=b*b-4*a*c)>=0?sqrt(d):sqrt(-d)
ch=(ch>='A'&&ch<='Z')?(ch+32):ch
以上均为合法的条件表达式.
(2)执行顺序:先求解表达式1,若值为非0,表示条件为真,则求表达式2,此时表达式2的值就作为整个条件表达式的值;
若表达式1的值为0,表示条件为假,则求解表达式3,表达式3的值就是整个条件表达式的值.例如:
(a>=0)?a:-a执行结果是a的绝对值.
(3)在程序中,通过把条件表达式的值直接赋予某个变量.例如:
min=(a<b)?a:b执行结果就是将条件表达式的值赋予变量min,即将a和b二者中较小的数赋给min.
(4)条件表达式的优先级别仅高于赋值运算符,而低于前面遇到过的所有运算符.
因此,min=(a<b)?a:b括号可以不要,可直接写成,min=a<b?a:b如果有x<y?x+1:y-1等效于x<y(x+1):(y-1)而不等效于(x<y?x+1:y)-1
(5)条件运算符的结合方向为"自右至左".
(6)条件表达式允许嵌套,即允许条件表达式中的表达式2和表达式3又是一个条件表达式.例如:
x>0?1:x<0?-1:0
上述条件表达式中,表达式3部分又是一个条件表达式.根据条件表达式的结合性,上述条件表达式等价于:
x>0?1:(x<0?-1:0)
其作用是判断x的符号情况.当x为正数时,该条件表达式的值为1;当x为负数时,该条件表达式的值为-1;当x为0时,该条件表达式的值为0.
(7)条件表达式仅当if语句中内嵌的语句为赋值语句(且两个分支都给同一变量赋值)时才能代替if语句.如:
if(a%2==0)
printf("even/n");
else
printf("odd/n");
不能写成:
(a%2==0)?printf("even/n"):printf("odd/n");
但可以用下面语句代替:
printf("%s/n",(a%2==0?"even":"odd");
该语句的作用是:若a为偶数,输出even;若a为奇数,输出odd.
(8)表达式1,表达式2,表达式3的类型可以不同.此时条件表达式的值的类型为它们中较高的类型.例如:
main(){
charc1,ch;
ch=getchar();
c1=ch<='Z'&&ch>='A'?'@':ch;
putchar(c1);
}
该程序的作用是从键盘输入任意一个字符,判别它们是否大写字母,如果是,输出一个@;否则按原样输出dot
上例中,程序第6行是关键语句,该语句实现输入字符的判断,选择与更换工作.
其执行过程为:先由此语句中的赋值号右侧的条件运算符对输入的字符进行判断和选择,若ch>='A'&&ch<='Z'成立,说明ch是大写英文字母,
此时选@;否则仍选原字符ch,然后把选择的结果赋值给原变量ch。
C++中的?和:为运算符。 Exp1 ? Exp2 : Exp3;
其中,Exp1、Exp2 和 Exp3 是表达式。请注意冒号的使用和位置。? : 表达式的值取决于 Exp1 的计算结果。
如果 Exp1 为真,则计算 Exp2 的值,且 Exp2 的计算结果则为整个 ? : 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,且 Exp3 的计算结果则为整个 ? : 表达式的值。如图所示:
? 被称为三元运算符,因为它需要三个操作数,可以用来代替如下所示的 if-else 语句:
例如:
if(y < 10){
var = 30;}else{
var = 40;}
可用一下代码代替:
var = (y < 10) ? 30 : 40;
扩展资料
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++ 内置了丰富的运算符,并提供了以下类型的运算符:
算术运算符
关系运算符
逻辑运算符
赋值运算符
杂项运算符
其中,?和:为杂项运算符,杂项运算符相关内容如图所示:
1、C++中的“?”表示判断,可代替简单的if...else...语句。
2、而“:”表示前后不同条件下的返回值。
例:C++中的?和:为运算符。 Exp1 ? Exp2 : Exp3;
Exp1、Exp2 和 Exp3 是表达式,请注意冒号的使用和位置。
? : 表达式的值取决于 Exp1 的计算结果。
如果 Exp1 为真,则计算 Exp2 的值,且 Exp2 的计算结果则为整个 ? : 表达式的值。
如果 Exp1 为假,则计算 Exp3 的值,且 Exp3 的计算结果则为整个 ? : 表达式的值。
扩展资料:
其他运算:赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示。
在Java语言中,三目条件运算符(?:)与C语言中的使用规则是完全一致的。
参考资料来源:百度百科—c++运算符
“?”在编程语言中为三目运算符,表示判断,可代替简单的if...else...语句。
“:”前后表示不同条件下的返回值。
三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。
三目运算格式为:<表达式1> ? <表达式2> : <表达式3>。
"?"运算符的含义是:先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。
一般常用于简化if...else...的写法。例如:
意为:若a<0则b=0,否则b=1,
这样就大大减小了代码量。
扩展资料
冒号(:)用法
(1)表示机构内位域的定义(即该变量占几个bit空间)
typedef struct _XXX{
unsigned char a:4;
unsigned char c;
} ; XXX
(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。
struct _XXX{
_XXX() : y(0xc0) {}
};
(3) public:和private:后面的冒号,表示后面定义的所有成员都是公有或私有的,直到下一个"public:”或"private:”出现为止。"private:"为默认处理。
参考资料:百度百科 - 三目运算符
你说的是C++的三目运算符。
1、三目运算符
又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。
<表达式1> ? <表达式2> : <表达式3>; "?"运算符的含义是:先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。
2、a ? b : c简单理解方式为:
if(a){ return b; } else {return c;}
3、三目运算符的结合性是右结合。
例:a ? b : c ? d : e是按a ? b : (c ? d : e)执行,这就是右结合。
扩展资料:
C++使用条件运算符应注意
1、条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
因此max=(a>b)?a:b 可以去掉括号而写为 max=a>b?a:b
2、条件运算符?和:是一对运算符,不能分开单独使用。
3、条件运算符的结合方向是自右至左。
例如:a>b?a:c>d?c:d 应理解为 a>b?a:(c>d?c:d)
4、在a ? b : c中,b和c的类型必须一致。
参考资料: