三目运算符详解
三目运算符详解 对于有些选择分支结构,可以使用简单的条件运算符来代替. 如: if(a??? min=a; else??? min=b; 可以用下面的条件运算符来处理 min=(a 其中"(a是一个"条件表达式",它是这样执行的: 如果a 条件运算符由两个符号组成"?"和":",要求有3个操作对象,所以也叫它三目运算符,它是C语言中唯一的三目运算符. 它的一般形式为: 表达式1?表达式2:表达式3; 以下是关于条件运算符的几点说明: (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 (4)?条件表达式的优先级别仅高于赋值运算符,而低于前面遇到过的所有运算符. 因此,min=(a
? x>0?1:x<0?-1:0 上述条件表达式中,表达式3部分又是一个条件表达式.根据条件表达式的结合性,上述条件表达式等价于: ? ?x>0?1:(x<0?-1:0) 其作用是判断x的符号情况.当x为正数时,该条件表达式的值为1;当x为负数时,该条件表达式的值为-1;当x为0时,该条件表达式的值为0. ? ? 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.
main() { char c1,ch; ch = getchar(); c1 = ch <= 'Z' && ch >= 'A' ? ' @ ' : ch ; putchar(c1); } 该程序的作用是从键盘输入任意一个字符,判别它们是否大写字母,如果是,输出一个@;否则按原样输出 dot 上例中,程序第6行是关键语句,该语句实现输入字符的判断,选择与更换工作. 其执行过程为:先由此语句中的赋值号右侧的条件运算符对输入的字符进行判断和选择,若ch>='A'&&ch<='Z'成立,说明ch是大写英文字母, 此时选@;否则仍选原字符ch,然后把选择的结果赋值给原变量ch 。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ??NAND flash 坏块管理?? 下面也有内容,有一个新的标题
- ruby-on-rails – Rails model.valid?刷新自定义错误并错误
- oracle 重置sys密码的方法介绍
- ssh与ajax结合之json异常:org.apache.struts2.json.JSONEx
- 如何在PostgreSQL中查询索引的元数据
- ruby-on-rails – 如何从String生成文本文件以便在Ruby on
- C#中计算时间差中的小数问题解决
- objective-c – WatchOS2 Health Kit – 添加到活动移动环
- ajax+jsp+servlet+mysql实现登陆验证
- 3 聚合与排序