程序3: 1(X=0 f(x!=0) 真 假 y={0(×<0) if(x>0)y=1;直x>0假 1(X>0) else y=0 0 改正程序3: 真 x!=0 假 if()y-1:,M 20 eise 心U
程序3: y=-1; if (x!=0) if (x>0) y=1; else y=0; y=-1 x!=0 x>0 y=1 y=0 真 真 假 假 -1 0 1 (x=0) (x<0) (x>0) y= 改正程序3: y=-1; if (x!=0) { if (x>0) y=1; } else y=0; y=-1 x!=0 x>0 y=1 y=0 真 真 假 假
、条件运算符 条件运算符:?:(c中唯一的三目运算符) 优先级仅高于赋值类,右结合性 条件表达式的一般形式: 表达式1?表达式2:表达式3 运算过程:首先求表达式1的值,若为真(非0),则求表达 式2的值,且整个表达式的值为表达式2的值;若表达式1为 假(0),则求表达式3的值,且整个表达式的值为表达式3 的值。 if(a>b)x=a 5J: x=a>b? a: b+1;>x=((a>b)? a: (b+1); else x=b+1; a>b? a: c>d?c: d<> a>b? a:(e>d?c: d)
三、条件运算符 1、条件运算符: ? :(C中唯一的三目运算符) 优先级仅高于赋值类,右结合性 2、条件表达式的一般形式: 表达式1?表达式2:表达式3 运算过程:首先求表达式1的值,若为真(非0),则求表达 式2的值,且整个表达式的值为表达式2的值;若表达式1为 假(0),则求表达式3的值,且整个表达式的值为表达式3 的值。 例:x= a>b? a:b+1; x= ((a>b)? a:(b+1)); if (a>b) x=a; else x=b+1; a>b? a : c>d? c : d a>b? a : (c>d? c : d)
说明: 1、条件表达式不能完全取代语句,只有在讦语句中内嵌语 句为赋值语句、且两个分支都给同一个变量赋值时才能代替 语句。 if (a>b) printf(%dn", a); if (a>b)x=a; lse printf( %dn,b); else 2、条件表达式中,表达式1、表达式2和表达式3的类型可以 不同。若表达式2和表达式3类型不同,则整个条件表达式的 值应为二者中较高的类型。 2>1?1:1.5值为1.0 1?'a:10值为97 心U
说明: 1、条件表达式不能完全取代if 语句,只有在 if 语句中内嵌语 句为赋值语句、且两个分支都给同一个变量赋值时才能代替if 语句。 if (a>b) printf("%d\n",a); else printf("%d\n",b); if (a>b) x=a; else y=b; 2、条件表达式中,表达式1、表达式2和表达式3的类型可以 不同。若表达式2和表达式3类型不同,则整个条件表达式的 值应为二者中较高的类型。 2>1 ? 1 : 1.5 值为1.0 1 ? 'a' : 10 值为97
例:输入一个字符,如果是大写字母,转换为小写,如果不是 则不转换。输出最后得到的字符。 main( char ch; scanf( %c", &ch); ch=(ch>=A&&ch<='Z")?(ch+32):ch; printf("%c"’,ch);
例: 输入一个字符,如果是大写字母,转换为小写,如果不是 则不转换。输出最后得到的字符。 main( ) { char ch; scanf("%c",&ch); ch= (ch>='A'&&ch<='Z') ? (ch+32):ch; printf("%c",ch); }
switch(多分支)语句 switch结构与esef结构是多分支选择的两种形式。 else if:多条件并列测试,从中选 switch:单条件测试,从多种结果中选取一种执行 、格式 switch(表达式) case常量表达式1:语句1 case常量表达式2:语句2 case常量表达式n:语句n default:语句n+1 心U
switch(多分支)语句 switch结构与else if结构是多分支选择的两种形式。 else if:多条件并列测试,从中选一 switch:单条件测试,从多种结果中选取一种执行 1、格式: switch(表达式) { case 常量表达式1:语句1 case 常量表达式2:语句2 ┆ ┆ ┆ case 常量表达式n: 语句n default: 语句 n+1 }