1. C语言三目运算符问题
三目运算符为a?b:c即有三个参与运算的量。由条件运算符组成条件表达式的一般形式为:
表达式1?
表达式2:
表达式3
其求值规则为:如果表达式1的值为真,则以表达式2
的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。
条件表达式通常用于赋值语句之中。
例如条件语句:
if(a>b)
max=a;
else
max=b;
可用条件表达式写为
max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a赋予max,否则把b
赋予max。
使用条件表达式时,还应注意以下几点:
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)
这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条
件表达式。
void
main(){
int
a,b,max;
printf("\n
input
two
numbers:
");
scanf("%d%d",&a,&b);
printf("max=%d",a>b?a:b);
2. c语言题目:利用条件运算符的三目运算符完成此题:学习成绩>=90分的同学用A表示,60 -8
#include "stdio.h"
int main()
{
int n;
scanf("%d",&n);
n<60?putchar('C'):(n<=89?putchar('B'):putchar('A')) ;
return 0;
}
3. 编程问题 关于三目运算符的
你建的工程不对 把这个工程关了 重新建一个 如果是VS 7,0以上IDE 选择常规 建一个空项目 再向 源文件文件夹添加一个CPP文件 将代码拷到新建的CPP文件中 VS6.0 就直接建一个空项目添加文件
4. JAVA三目运算符问题
1、三目运算符 (表达式1)?(表达式2):(表达式3),计算方法是这样的:表达式1是一个逻辑表达式,如果其值为true,则整个表达式的值为表达式2的值,否则为表达式3的值
2、例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);结果为i = 8.因为5 > 3为true,所以i = 5 + 3.
3、根据三目运算符的从右到左的结合性,我是这样划分的
year > a.year ? 1 : (year < a.year ? -1 : (month > a.month ? 1 : (month < a.month ? -1 : (day > a.day ? 1 : (day < a.day ? -1 : 0)))));
所以应该从最右边的那个表达式开始计算,结果应该是1、0、-1中的一个值。
以上纯属个人理解。没搞清楚你这个算法到底是什么意义。。。。还有你的compare()方法不能声明为静态。
5. 三目运算符
.....先手抄一边题目:
var a=2;
var b=1;
true?a++<1?++b:++a>b++?++b:++a:false
嵌套的三目运算要"从前往后算 从后往前"
第一步 最后一个分号 和 第一个问号和之间的部分是个表达式 ,括起来。
true?(a++<1?++b:++a>b++?++b:++a):false
第二步 看加粗部分。问号前边必须是布尔表达式,所以>b++前面的部分是一个表达式,括起来,如下:
true?((a++<1?++b:++a)>b++?++b:++a):false
计算过程:
就是计算表达式((a++<1?++b:++a)>b++?++b:++a),也就是计算(a++<1?++b:++a)>b++的真假,从而判断最终取++b 还是++a的值
计算a++<1,为false,此时a=3
计算++a,即(a++<1?++b:++a)=++a=4,此时a=4
计算4>b++, 4>1为true,即 (a++<1?++b:++a)>b++为true,此时b=2
所以最终取表达式++b的值 为3
6. (三目运算符)下列说法正确的是
答案 B
三目运算符(c>3)?(d+1):e;?前(c>3)成立输出(d+1),否则输出e;
7. c语言 三目运算符问题
答案却是是选C
在C语言里,没有逻辑变量,所有非零的数都可以认为是真,只有零是假;
题目的意思是:若(M)成立,则返回(a++)的值,否则返回(a--)的值.
而(M)成立,也就是说,M的值为真,也就等价于M!=0
8. 三目运算符的例子
int a=2;
int c=3;
int b=(a>c)?a:c;
cout<<b:<<b<<endl;
这样的结果是b为3
eg:
int a=1,b=2,z;
z=a>b?a:(a>b?a:b);
cout<<z:<<z<<endl;
这样输出的结果是:z:2
eg:
int a=1,b=2,z;
z=a>b?a:b;//去了括号
cout<<z:<<z<<endl;
这样的输出的结果是:z:2
一般来说,三目运算符的结合性是右结合的
但是这点在ANSI C中并没有明确规定
所以它的执行顺序有时是由编译器决定的
在PHP中运用实例如下:
$a = (1>0) ? zhen : 'jia'; // 三目运算符 与下边if 语句 意思一样
if( 1 > 0 ){
$a = zhen;
}else{
$a = jia;
}
9. 三目运算符
从左向右呀!w<x不成立所以返回w值,可以自己上c++尝试一下
10. 关于C语言中三目运算符的用法及运算(13>1215:6>78:9)的结果是
分析如下:
13>12?15:6>7?8:9 --> 13大于12吗?,如果大于(即13>12为真)那么结果为15,如果不大于,那么再看6>7吗?如果大于,结果等于8,否则结果等于9。
也就是说先看13是不是大于12,如果不大于才看后面6大于7吗,在这题里,13>12已经为真了,所以结果就等于15,后面的第二次判断不用看了。