C++ 三目运算符问题

cout<<(a=(a>="a"&&a<="z")?(a+32):a); ···帮我解释下···要通俗易懂···谢谢···

三目运算就是下面这算式了
a>="a"&&a<="z")?(a+32):a
它的意思是:a代表的字符在小写字母'a'和'z'之间吗?如果是,运算结果是a+32;如果不是,结果是a

这段程序应该是字母大小写转换,但有点问题。如果是想把小写转成大写,后面应该是(a-32);如果是想把大写转成小写,引号里应该是大写字母A和Z
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-03
a=(a>='a'&&a<='z')?(a-32):a功能将a中的字母小写转换为大写
a=(a>='A'&&a<='Z')?(a+32):a功能将a中的字母大写转换为小写

条件运算符和条件表达式
如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。
条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。
由条件运算符组成条件表达式的一般形式为:
表达式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又是一个条件表达式。
第2个回答  2009-05-03
语法错误a>="a"&&a<="z":应该是a>='a'&&a<='z'吧,如果双引号应该就表示是字符串了,所以应该是单引号。
如果想转换大小写a+32,应该改为a-32,好像是a=96,A=64。
三目运算符的意思就是:如果变量a 在字符'a'与'z'之间,就返回a+32的值,如果不是,则返回a的值。
然后再将返回的值赋给变量a。
第3个回答  2009-05-03
这是三目运算的形式

表达式1 :? 表达式2:表达式3

先判断表达式1 是否为真 如果为真 则执行表达式2 否则执行表达式3

所以昵所给题目中 应先判断?号前的表达真假 真则:a+32 假则:a
?号前 为一个逻辑表达式 加一个赋值语句 先看逻辑表达式真假 将其值赋给a

因为前面为真 所以执行 a+32
注意 此时 a的值已与原来不同
第4个回答  2009-05-03
a=(a>="a"&&a<="z")为真,就把a+32赋给a;为假,把a赋给a,即不变,然后输出a。。

c++中的三目运算符执行的结果是?
执行的结果:首先比较a和b的大小,当ab为1的时候那么会执行表达式c<d?c:d,然后比较c和d的大小,如果c小于d那么表达式的结果就为c,如果c大于d,那么表达式的结果为d。因为a=1,b=2,所以a

C++ 三目运算符问题
三目运算就是下面这算式了 a>="a"&&a<="z")?(a+32):a 它的意思是:a代表的字符在小写字母'a'和'z'之间吗?如果是,运算结果是a+32;如果不是,结果是a 这段程序应该是字母大小写转换,但有点问题。如果是想把小写转成大写,后面应该是(a-32);如果是想把大写转成小写,引号里应该是...

C++三目运算符返回值类型问题
三目运算符是这样的:A?B:C,若A表达式为真,则三目运算符结果为B表达式的结果, 若A为假,则为C的结果,8>5为真,则返回变量a

C++中三目运算符是什么,怎么用
三目运算符是?:结构的运算 所谓三目就是需要三个变量进行运算的操作。它等价于短if-else操作。举个简单的例子:c=a>b?a:b 这可分成几个部分,用括号分开:(a=)(2>1)?(3):(4)最左边是赋值操作 第二个部分是一个判断 第三和第四部分是两个常数 首先判断第三部分是否成立,成立即选择第三...

关于C++ 三目运算符
a=a+b b=a-b a=a-b

C++三目运算符优先级问题
按照你的代码(我加了一句输出),汇编之后,发现g++忽略了1?1:a=1;但是将1?1:a=1;改成1?a:1=1时编译报错,这应该是g++编译器在检查代码时的方向有关 在gcc中无论此三目运算是不能被赋值的,也就是说,不能被当做左值.而在g++中是可以做左值的 ...

条件运算符的运算顺序是怎样的?
条件运算符(? :)的运算规则是?如下:C++中,“?”与“:”共同组成三目条件运算符(?:)三目条件运算符(?:)使用例子如下:x ? y:z;上面的三目条件运算的规则是:先计算表达式x的值,若x为真,则整个三目运算的结果是表达式y的值;若x为假,则整个三目运算的结果是表达式z的值。下面的例子为...

c++三目运算符很奇怪! unsigned int k=2; int l=-6; cout<<((l+k)>...
unsigned int k=2,是一个没有符号的整形数字,所以当它可i相加时,就成了X值,因为这个X是一个正数,所以=X X大于0 (l+k)>0?1:0,很明显,我们可以看出是输出1了 如果不明白给一个代码你 include <iostream.h> int main(){ unsigned int k=2;int l=-6;cout<<(k+l)<<endl;retu...

C++语言:三目运算符 表达式1 ?表达式2 : 表达式3 的执行方向是右到左...
当然是从左到右了。先判断表达式1,若满足,就执行2,否则执行3。

C++新手关于三目运算符这行的疑问
||的优先级是低于&&的 帮你括了一下,便于你理解。c1=((c1>='a'&&c1<='z'-4)||(c1>='A'&&c1<='z'-4))?c1+4:c1-22

相似回答