好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

运算符和表达式.ppt

35页
  • 卖家[上传人]:ni****g
  • 文档编号:580471648
  • 上传时间:2024-08-29
  • 文档格式:PPT
  • 文档大小:216.02KB
  • / 35 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第第3章章 运算符和表达式运算符和表达式 第第3章章 运算符和表达式运算符和表达式v3.1 3.1 算术表达式算术表达式算术表达式算术表达式 v3.2 3.2 赋值表达式赋值表达式赋值表达式赋值表达式 v3.3 3.3 关系表达式关系表达式关系表达式关系表达式 v3.4 3.4 逻辑表达式逻辑表达式逻辑表达式逻辑表达式 v3.5 3.5 条件表达式条件表达式条件表达式条件表达式v3.6 3.6 逗号表达式逗号表达式逗号表达式逗号表达式v3.7 3.7 多种类型混合运算多种类型混合运算多种类型混合运算多种类型混合运算 学习目标学习目标 v学会使用常用的运算符学会使用常用的运算符学会使用常用的运算符学会使用常用的运算符v学会正确书写学会正确书写学会正确书写学会正确书写C C表达式表达式表达式表达式v掌握运算符的优先级、结合性和运算对象掌握运算符的优先级、结合性和运算对象掌握运算符的优先级、结合性和运算对象掌握运算符的优先级、结合性和运算对象数目数目数目数目v理解表达式的求解过程理解表达式的求解过程理解表达式的求解过程理解表达式的求解过程v了解隐式类型转换和强制类型的转换了解隐式类型转换和强制类型的转换了解隐式类型转换和强制类型的转换了解隐式类型转换和强制类型的转换 第第3章章 运算符和表达式运算符和表达式C C运运运运算算算算符符符符算术运算符:(算术运算符:(算术运算符:(算术运算符:(+  -  *  /  %  ++  --+  -  *  /  %  ++  --))))关系运算符:(关系运算符:(关系运算符:(关系运算符:(<  <=   ==   >   >=   !=<  <=   ==   >   >=   !=))))逻辑运算符:(!逻辑运算符:(!逻辑运算符:(!逻辑运算符:(!     &&  ||&&  ||))))位运算符位运算符位运算符位运算符     :(:(:(:(<<   >>   ~  |  ^  &<<   >>   ~  |  ^  &))))赋值运算符:(赋值运算符:(赋值运算符:(赋值运算符:(= = 及其扩展)及其扩展)及其扩展)及其扩展)条件运算符:(条件运算符:(条件运算符:(条件运算符:(?:?:))))逗号运算符:(逗号运算符:(逗号运算符:(逗号运算符:(, ,))))指针运算符:(指针运算符:(指针运算符:(指针运算符:(*  *  & &))))求字节数求字节数求字节数求字节数      :(:(:(:(sizeofsizeof))))强制类型转换:(类型)强制类型转换:(类型)强制类型转换:(类型)强制类型转换:(类型)分量运算符:(分量运算符:(分量运算符:(分量运算符:(.  ->.  ->))))下标运算符:(下标运算符:(下标运算符:(下标运算符:([ ][ ]))))其它其它其它其它          :(:(:(:(( )  -( )  -)))) vv学习运算符应注意:学习运算符应注意:学习运算符应注意:学习运算符应注意:§运算符功能运算符功能运算符功能运算符功能§与运算量关系与运算量关系与运算量关系与运算量关系•要求运算量个数、要求运算量个数、要求运算量个数、要求运算量个数、•要求运算量类型要求运算量类型要求运算量类型要求运算量类型§运算符优先级别运算符优先级别运算符优先级别运算符优先级别•优先级高优先级高优先级高优先级高( (级别数值小级别数值小级别数值小级别数值小) )者先运算者先运算者先运算者先运算§结合方向(优先级相同时)结合方向(优先级相同时)结合方向(优先级相同时)结合方向(优先级相同时)•左结合:运算对象先参加左边的运算,结果再参左结合:运算对象先参加左边的运算,结果再参左结合:运算对象先参加左边的运算,结果再参左结合:运算对象先参加左边的运算,结果再参加右运算。

      加右运算加右运算加右运算•右结合:运算对象先参加右边的运算,结果再参右结合:运算对象先参加右边的运算,结果再参右结合:运算对象先参加右边的运算,结果再参右结合:运算对象先参加右边的运算,结果再参加左运算加左运算加左运算加左运算§结果的类型结果的类型结果的类型结果的类型 3.1 算术表达式vv3.1.1 3.1.1 算术表达式算术表达式算术表达式算术表达式§表达式表达式表达式表达式::::常量,变量,函数,运算符组成的有意义的式子常量,变量,函数,运算符组成的有意义的式子常量,变量,函数,运算符组成的有意义的式子常量,变量,函数,运算符组成的有意义的式子§基本算术运算符:基本算术运算符:基本算术运算符:基本算术运算符: + + - - * / % * / %•结合方向:从左向右结合方向:从左向右结合方向:从左向右结合方向:从左向右•优先级:优先级:优先级:优先级: - - ----> ---->* / %* / % -----> + - -----> + - (2) (3) (4)(2) (3) (4)•说明:说明:说明:说明:– –“-”“-”为为为为单目单目单目单目运算符时运算符时运算符时运算符时, ,右结合性右结合性右结合性右结合性– –两整数相除,结果为整数两整数相除,结果为整数两整数相除,结果为整数两整数相除,结果为整数– –%%要求两侧均为整型数据要求两侧均为整型数据要求两侧均为整型数据要求两侧均为整型数据例例      5/2  得得 2          -5/2.0  得得 -2.5例例      5%2   得得 1          -5%2    得得  -1       1%10   得得  1        6%2    得得  0      5.5%2      ( ) 写成写成写成写成C C表达式:表达式:表达式:表达式:1.0/2*(a*x+(a+x)/4/x) 1.0/2*(a*x+(a+x)/4/x) 写成写成写成写成C C表达式:表达式:表达式:表达式:(a+b)/(c+d*e/(f+g*h)) (a+b)/(c+d*e/(f+g*h)) §作用:使变量值加作用:使变量值加作用:使变量值加作用:使变量值加1 1或减或减或减或减1 1§种类:种类:种类:种类:•前缀前缀前缀前缀++i, --i (++i, --i (先执行先执行先执行先执行i i+1+1或或或或i-1i-1,,,,再使用再使用再使用再使用i i值)值)值)值)•后后后后缀缀缀缀i++,i-- (i++,i-- (先使用先使用先使用先使用i i值值值值, ,再执行再执行再执行再执行i i+1+1或或或或i-1i-1))))§说明:说明:说明:说明:•++ -- ++ -- 不能不能不能不能用于常量和表达式用于常量和表达式用于常量和表达式用于常量和表达式, ,如如如如5++5++,,,,( (a+b)++a+b)++•++ --++ --结合方向:结合方向:结合方向:结合方向: 自右向左自右向左自右向左自右向左•优先级:优先级:优先级:优先级:- ++ -- ------>* / % ----->+ -- ++ -- ------>* / % ----->+ - (2) (2) (3) (3) (4) (4)3.1.2  自增、自减运算自增、自减运算 例例例例   3.1  3.1  注意下列程序运行后变量注意下列程序运行后变量注意下列程序运行后变量注意下列程序运行后变量x x与与与与y y的区别。

      的区别include <#include  >void main()void main(){   {           intint a=2,b=2,x,y;  a=2,b=2,x,y;     x=--a+2;               x=--a+2;           // // 前缀运算前缀运算前缀运算前缀运算        y=b--+2;          y=b--+2;          // // 后缀运算后缀运算后缀运算后缀运算        printf("xprintf("x=%d  y=%d\n”,x,y); =%d  y=%d\n”,x,y);         printf("aprintf("a=%d  b=%d\n”,a,b);=%d  b=%d\n”,a,b); }  }程序运行:程序运行:程序运行:程序运行:x=3  y=4  x=3  y=4  a=1  b=1a=1  b=1    vv 赋值运算赋值运算赋值运算赋值运算§符号:符号:符号:符号:= = = =§赋值表达式:赋值表达式:赋值表达式:赋值表达式:变量变量变量变量= = = =表达式表达式表达式表达式§作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量vv赋值语句赋值语句赋值语句赋值语句 §变量变量变量变量= = = =表达式表达式表达式表达式; ; ; ;vv复合赋值运算复合赋值运算复合赋值运算复合赋值运算§种类种类种类种类::::+= -= *= /= %= += -= *= /= %= <<= >>= &= ^= |= <<= >>= &= ^= |=§含义:含义:含义:含义: 变量变量变量变量 op= op= 表达式表达式表达式表达式  变量变量变量变量 = = 变量变量变量变量 op op 表达式表达式表达式表达式3.2 赋赋 值值 表表 达达 式式a+=3a+=3a=a+3a=a+3x*=y+8x*=y+8x=x*(y+8)x=x*(y+8)x%=3x%=3x=x%3x=x%3例例例例     a=3;a=3;    d=    d=funcfunc();();    c=d+2;    c=d+2;=的左边必须是一个变量=的左边必须是一个变量=的左边必须是一个变量=的左边必须是一个变量 3.2 赋赋 值值 表表 达达 式式vv说明说明说明说明: :§结合方向:自右向左结合方向:自右向左结合方向:自右向左结合方向:自右向左§优先级优先级优先级优先级: 14: 14§左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式§赋值表达式的值与变量值相等赋值表达式的值与变量值相等赋值表达式的值与变量值相等赋值表达式的值与变量值相等, ,且可嵌套且可嵌套且可嵌套且可嵌套vv赋值时的类型转换赋值时的类型转换赋值时的类型转换赋值时的类型转换 §赋值转换赋值转换赋值转换赋值转换规则规则规则规则: : : :使赋值号右边表达式值使赋值号右边表达式值使赋值号右边表达式值使赋值号右边表达式值自动自动自动自动转换成其左边转换成其左边转换成其左边转换成其左边变量的类型变量的类型变量的类型变量的类型§例如:例如:例如:例如:“ “double zdouble z;;;;” ”,语句,语句,语句,语句“ “z=23;”z=23;”执行后,执行后,执行后,执行后,z z的值的值的值的值是实数是实数是实数是实数23.023.0§例如:例如:例如:例如:“ “intint x=3 x=3;;;;” ”,语句,语句,语句,语句“ “x+=1.999;”x+=1.999;”执行后,执行后,执行后,执行后,x x的的的的值是值是值是值是4 4 例例例例   3.2  3.2  赋值运算符的使用。

      赋值运算符的使用赋值运算符的使用赋值运算符的使用include <#include  >void main()void main(){   {           intint a=5,b=5,c=5;  a=5,b=5,c=5;     a-=2;             a-=2;         // // 表示表示表示表示a=a-2a=a-2    b*=a+3;        b*=a+3;    // // 表示表示表示表示b=b*(a+3)b=b*(a+3)    c/=a-1;         c/=a-1;     // // 表示表示表示表示c=c/(a-1)c=c/(a-1)        printf("aprintf("a=%d,b=%d,c=%d\n",a,b,c); =%d,b=%d,c=%d\n",a,b,c);  }  }程序运行:程序运行:程序运行:程序运行:a=3,b=30,c=2a=3,b=30,c=2 3.3 关系表达式vv关系运算符关系运算符关系运算符关系运算符§种类:种类:种类:种类:< <= == >= > !=< <= == >= > !=§结合方向:结合方向:结合方向:结合方向:自左向右自左向右自左向右自左向右§优先级别:优先级别:优先级别:优先级别:< <<=<=> >>=>=====!=!=优先级优先级优先级优先级6 6(高)(高)(高)(高)优先级优先级优先级优先级7 7(低)(低)(低)(低) 程序运行:程序运行:程序运行:程序运行:no,x!=y no,x!=y 例例例例   3.3  3.3  分析下面程序的运行结果。

      分析下面程序的运行结果分析下面程序的运行结果分析下面程序的运行结果include <#include  >void main()void main(){   {       float x,y=0.3;    float x,y=0.3;    y=y*11;    y=y*11;    x=3+0.3;        x=3+0.3;        if(x==y)     if(x==y) printf("ok,xprintf("ok,x==y"); ==y"); // // 若若若若x x与与与与y y相等,输出相等,输出相等,输出相等,输出okok,,,,x==yx==y    else     else printf("no,xprintf("no,x!=y");      !=y");      // x// x与与与与y y不相等,则输出不相等,则输出不相等,则输出不相等,则输出nono,,,,x!=yx!=y }  }改为改为改为改为fabs(x-yfabs(x-yfabs(x-yfabs(x-y)<1e-6)<1e-6)<1e-6)<1e-6 3.3 关系表达式v关系表达式关系表达式关系表达式关系表达式:用关系运算符将两个表达式连接起来:用关系运算符将两个表达式连接起来:用关系运算符将两个表达式连接起来:用关系运算符将两个表达式连接起来的式子。

      的式子v关系表达式格式:关系表达式格式:关系表达式格式:关系表达式格式:表达式表达式表达式表达式 关系运算符关系运算符关系运算符关系运算符 表达式表达式表达式表达式v关系表达式的值:关系表达式的值:关系表达式的值:关系表达式的值: 1 1 1 1 关系成立,关系成立,关系成立,关系成立,0 0 0 0 关系不成立关系不成立关系不成立关系不成立 例例例例 3.4 3.4 若有若有若有若有intint x=2,y=3,z=5; x=2,y=3,z=5;,,,,计算下列关系表达计算下列关系表达计算下列关系表达计算下列关系表达式的值1 1))))x%2= =0x%2= =0 表达式值是表达式值是表达式值是表达式值是1 1 “x%2”x%2”值为值为值为值为0 0,再计算,再计算,再计算,再计算“ “0= =0”0= =0”结果为结果为结果为结果为1 12 2))))z=x–1>=y–2=y–2=1<1”z=1>=1<1”,,,,关关关关系运算系运算系运算系运算“ “>=”>=”与与与与“ “<”<”优先级相同,根据结合性,从左优先级相同,根据结合性,从左优先级相同,根据结合性,从左优先级相同,根据结合性,从左到右运算,计算到右运算,计算到右运算,计算到右运算,计算“ “1>=1”1>=1”其值是其值是其值是其值是1 1,得,得,得,得“ “z=1<1”z=1<1”,,,,再再再再计算计算计算计算“ “1<1”1<1”为为为为0 0,故,故,故,故z z及表达式的计算结果为及表达式的计算结果为及表达式的计算结果为及表达式的计算结果为0 0。

      3 3))))8<5<38<5<3 表达式值是表达式值是表达式值是表达式值是1 1先计算“ “8<5”8<5”其值为其值为其值为其值为0 0,再计算,再计算,再计算,再计算“ “0<3”0<3”,值为,值为,值为,值为1 1,表达式的值为,表达式的值为,表达式的值为,表达式的值为1 1 3.4 逻辑表达式逻辑表达式vv逻辑运算是判断运算对象的逻辑关系,运算对象为关系表达逻辑运算是判断运算对象的逻辑关系,运算对象为关系表达逻辑运算是判断运算对象的逻辑关系,运算对象为关系表达逻辑运算是判断运算对象的逻辑关系,运算对象为关系表达式或逻辑量式或逻辑量式或逻辑量式或逻辑量vv运算量运算量运算量运算量: : : : 0 0 0 0表示表示表示表示““““假假假假””””,,,,非非非非0 0 0 0表示表示表示表示““““真真真真””””运算结果运算结果运算结果运算结果: : : : “ “ “ “假假假假””””为为为为0 0 0 0,,,,““““真真真真””””为为为为1 1 1 1vv逻辑运算种类:逻辑运算种类:逻辑运算种类:逻辑运算种类: ! !(逻辑非)(逻辑非)(逻辑非)(逻辑非) &&&&(逻辑与)(逻辑与)(逻辑与)(逻辑与) || ||(逻辑或)(逻辑或)(逻辑或)(逻辑或)§逻辑非的一般形式:逻辑非的一般形式:逻辑非的一般形式:逻辑非的一般形式:! ! 表达式表达式表达式表达式•功能:单目运算符,其结果为运算对象逻辑值取功能:单目运算符,其结果为运算对象逻辑值取功能:单目运算符,其结果为运算对象逻辑值取功能:单目运算符,其结果为运算对象逻辑值取“ “反反反反” ”。

      若表达式值为若表达式值为若表达式值为若表达式值为0 0,则,则,则,则“ “! !表达式表达式表达式表达式” ”值为值为值为值为1 1;否则,;否则,;否则,;否则,“ “! !表达表达表达表达式式式式” ”值为值为值为值为0 0•例如:例如:例如:例如:!x!x,作用是判别,作用是判别,作用是判别,作用是判别x x是否为是否为是否为是否为0 0,,,,x x为为为为0 0时,值为时,值为时,值为时,值为1 1;否;否;否;否则值为则值为则值为则值为0 0,与,与,与,与x==0x==0等价 3.4 逻辑表达式逻辑表达式vv逻辑运算种类:逻辑运算种类:逻辑运算种类:逻辑运算种类: ! !(逻辑非)(逻辑非)(逻辑非)(逻辑非) &&&&(逻辑与)(逻辑与)(逻辑与)(逻辑与) || ||(逻辑或)(逻辑或)(逻辑或)(逻辑或)§逻辑与的一般形式:逻辑与的一般形式:逻辑与的一般形式:逻辑与的一般形式:表达式表达式表达式表达式 && && 表达式表达式表达式表达式§功能:若参加运算的两个表达式值均为非功能:若参加运算的两个表达式值均为非功能:若参加运算的两个表达式值均为非功能:若参加运算的两个表达式值均为非0 0,则结果为,则结果为,则结果为,则结果为1 1;;;;否则结果为否则结果为否则结果为否则结果为0 0。

      §例如:判断例如:判断例如:判断例如:判断“ “c c是一个大写字母是一个大写字母是一个大写字母是一个大写字母” ”的逻辑表达式:的逻辑表达式:的逻辑表达式:的逻辑表达式: c>=' c>='A'&&cA'&&c<='Z'<='Z'§逻辑或的一般形式:逻辑或的一般形式:逻辑或的一般形式:逻辑或的一般形式:表达式表达式表达式表达式 || || 表达式表达式表达式表达式§功能:若参加运算的两个表达式值均为功能:若参加运算的两个表达式值均为功能:若参加运算的两个表达式值均为功能:若参加运算的两个表达式值均为0 0,则结果为,则结果为,则结果为,则结果为0 0;否;否;否;否则结果为则结果为则结果为则结果为1 1§例如,判断例如,判断例如,判断例如,判断“ “c c是一个字母是一个字母是一个字母是一个字母” ”的逻辑表达式:的逻辑表达式:的逻辑表达式:的逻辑表达式:c>='c>='A'A'&&&&c c<='<='Z'Z'|| ||c c>='>='a'a'&&&&c c<='z'<='z' !       !       (2)(2)&& && (11)(11)||     ||     (12)(12)高高高高低低低低l优先级:优先级:优先级:优先级:l结合方向:结合方向:结合方向:结合方向:!      !      : :从右向左从右向左从右向左从右向左&&  :&&  :从左向右从左向右从左向右从左向右||      :||      :从左向右从左向右从左向右从左向右3.4 逻辑表达式逻辑表达式 例例例例   3.5  3.5  设设设设“ “intint a=2,b=3; char c=’A’;float x=3.6,y=–4.4” a=2,b=3; char c=’A’;float x=3.6,y=–4.4”,,,,写写写写出下列表达式的值。

      出下列表达式的值出下列表达式的值出下列表达式的值1 1))))a>b||!a>b||!((((c–‘A’c–‘A’))))&&x

      例例例例   3.6  3.6  根据下列条件,写出根据下列条件,写出根据下列条件,写出根据下列条件,写出C C的逻辑表达式的逻辑表达式的逻辑表达式的逻辑表达式1 1)条件)条件)条件)条件“ “长度分别为长度分别为长度分别为长度分别为a a、、、、b b、、、、c c的三条线段能够组成的三条线段能够组成的三条线段能够组成的三条线段能够组成三角形三角形三角形三角形” ”逻辑表达式:逻辑表达式:逻辑表达式:逻辑表达式:   a+b>c&&a+c>b&&b+c>aa+b>c&&a+c>b&&b+c>a((((2 2))))条件条件条件条件“ “|x||x|是一个两位数是一个两位数是一个两位数是一个两位数” ”逻辑表达式逻辑表达式逻辑表达式逻辑表达式:   x>=10&&x<=99||x>=–99&&x<=–10:   x>=10&&x<=99||x>=–99&&x<=–10((((3 3))))条件条件条件条件“ “y y年是润年年是润年年是润年年是润年” ”逻辑表达式:逻辑表达式:逻辑表达式:逻辑表达式:   y%4==0&&y%100!=0||y%400==0y%4==0&&y%100!=0||y%400==0 例例例例   3.6  3.6  根据下列条件,写出根据下列条件,写出根据下列条件,写出根据下列条件,写出C C的逻辑表达式。

      的逻辑表达式的逻辑表达式的逻辑表达式4 4))))条件条件条件条件“ “x x、、、、y y 落在圆心在(落在圆心在(落在圆心在(落在圆心在(0,00,0)半径为)半径为)半径为)半径为1 1的圆外、的圆外、的圆外、的圆外、中心点在(中心点在(中心点在(中心点在(0,00,0)边长为)边长为)边长为)边长为4 4的矩形内的矩形内的矩形内的矩形内” ”逻辑表达式:逻辑表达式:逻辑表达式:逻辑表达式:x*x*x+yx+y*y>1&&x>=–2&&x<=2&&y>=–2&&y<=2*y>1&&x>=–2&&x<=2&&y>=–2&&y<=22 22 2-2-21 11 1-1-1-1-1-2-2 注意注意注意注意v逻辑表达式的特性逻辑表达式的特性逻辑表达式的特性逻辑表达式的特性::::§逻辑表达式求解时,并非所有的逻辑运算符都被执行,只逻辑表达式求解时,并非所有的逻辑运算符都被执行,只逻辑表达式求解时,并非所有的逻辑运算符都被执行,只逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,是在必须执行下一个逻辑运算符才能求出表达式的解时,是在必须执行下一个逻辑运算符才能求出表达式的解时,是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符才执行该运算符才执行该运算符才执行该运算符例例例例     a&&b&&c       a&&b&&c       // //只在只在只在只在a a为真时,才判别为真时,才判别为真时,才判别为真时,才判别b b的值;的值;的值;的值;                                                          // //只在只在只在只在a a、、、、b b都为真时,才判别都为真时,才判别都为真时,才判别都为真时,才判别   c c的值的值的值的值例例例例     a||b||c      a||b||c      // //只在只在只在只在a a为假时,才判别为假时,才判别为假时,才判别为假时,才判别b b的值;的值;的值;的值;                                            // //只在只在只在只在a a、、、、b b都为假时,才判别都为假时,才判别都为假时,才判别都为假时,才判别   c c的值的值的值的值例例例例     a=1;b=2;c=3;d=4;m=1;n=1;a=1;b=2;c=3;d=4;m=1;n=1;     (m=a>b)&&(n=c>d)     (m=a>b)&&(n=c>d) // //结果结果结果结果m=0,n=1m=0,n=1 例例例例   3.7  3.7  分析下面程序的运行结果。

      分析下面程序的运行结果分析下面程序的运行结果分析下面程序的运行结果include <#include  > void main()void main(){  {          intint x,y,z,m; x,y,z,m;    x=y=z=0 ;       x=y=z=0 ;   // // 给变量给变量给变量给变量x x、、、、y y、、、、z z赋值赋值赋值赋值0 0    m=(x=1)&&(y=1)||(z=1);    m=(x=1)&&(y=1)||(z=1);        printf("mprintf("m=%d x=%d y=%d z=%d",  m,x,y,z);=%d x=%d y=%d z=%d",  m,x,y,z);} }程序运行:程序运行:程序运行:程序运行:m=1  x=1  y=1  z=0m=1  x=1  y=1  z=0 3.5 条件表达式条件表达式vv条件运算符:条件运算符:条件运算符:条件运算符:?:?:?:?:vv条件表达式的一般形式:条件表达式的一般形式:条件表达式的一般形式:条件表达式的一般形式: 表达式表达式表达式表达式1 1 ? ? 表达式表达式表达式表达式2 2 : : 表达式表达式表达式表达式3 3§执行过程执行过程执行过程执行过程例例例例      if (a>b)if (a>b)                      printf(“%d”,aprintf(“%d”,a); );       else       else                        printf(“%d”,bprintf(“%d”,b); );printf(“%d”,aprintf(“%d”,a>b?a:b);>b?a:b);例例例例   求求求求   a+|b|a+|b|          printf(“a+|bprintf(“a+|b|=%d\n”,b>0?a+b:a-b);|=%d\n”,b>0?a+b:a-b);表达式表达式表达式表达式1 1取取取取表达式表达式表达式表达式2 2值值值值取取取取表达式表达式表达式表达式3 3值值值值非非非非0 0=0=0§条件运算符可嵌套条件运算符可嵌套条件运算符可嵌套条件运算符可嵌套 如如如如 x>0?1:(x<0?-1:0)x>0?1:(x<0?-1:0)§优先级优先级优先级优先级: : 1313§结合方向:结合方向:结合方向:结合方向:自右向左自右向左自右向左自右向左 如如如如 a>b?a:c>d?c:d a>b?a:c>d?c:d  a>b?a:(c>d?c:d) a>b?a:(c>d?c:d)§表达式表达式表达式表达式1 1、表达式、表达式、表达式、表达式2 2、、、、表达式表达式表达式表达式3 3类型可不同,条件表达式值类型可不同,条件表达式值类型可不同,条件表达式值类型可不同,条件表达式值取较高的类型取较高的类型取较高的类型取较高的类型n n功能:相当于条件语句,但不能取代一般功能:相当于条件语句,但不能取代一般功能:相当于条件语句,但不能取代一般功能:相当于条件语句,但不能取代一般ifififif语句语句语句语句 例例例例 3.8 3.8 用条件表达式计算。

      用条件表达式计算用条件表达式计算用条件表达式计算 (1)1)求变量求变量求变量求变量t t的符号            f=t>=0?1:–1f=t>=0?1:–1(2)(2)求三个变量求三个变量求三个变量求三个变量x x、、、、y y、、、、z z的最大值的最大值的最大值的最大值            s=(s=x>y?x:y)>z?s:zs=(s=x>y?x:y)>z?s:z(3)(3)将字符变量将字符变量将字符变量将字符变量chch若为小写字母则改为大写字母,其余字符不变若为小写字母则改为大写字母,其余字符不变若为小写字母则改为大写字母,其余字符不变若为小写字母则改为大写字母,其余字符不变                 chch=(=(chch>=’>=’a’&&cha’&&ch<=’<=’z’?ch+’Az’?ch+’A’–’’–’a’:cha’:ch) )( (4)4)输出整型变量输出整型变量输出整型变量输出整型变量x x的绝对值的绝对值的绝对值的绝对值          (x>0)?printf("%d",x): (x>0)?printf("%d",x): printf("%dprintf("%d",–x);",–x); 例例例例 3.9 3.9 下列程序输入变量下列程序输入变量下列程序输入变量下列程序输入变量a a、、、、b b、、、、c c 后,按值从大到小后,按值从大到小后,按值从大到小后,按值从大到小输出。

      输出include <#include  >void main()void main(){   {           intint a,b,c,m,n,k; a,b,c,m,n,k;        scanf("%d%d%d",&a,&b,&cscanf("%d%d%d",&a,&b,&c); );    m=a>b?a:b;         m=a>b?a:b;     // m// m取取取取a a、、、、b b中大数中大数中大数中大数        m=m>c?m:c;   m=m>c?m:c;   // m// m取取取取a a、、、、b b、、、、c c中最大数中最大数中最大数中最大数        n=a >main()main(){   {   intint x,y=7,a,b,c; x,y=7,a,b,c;    float z=4;    float z=4;    x=(y=y+6,y/z);    x=(y=y+6,y/z);    c*=(a=b=1,c=2,b+=a,b*5);     c*=(a=b=1,c=2,b+=a,b*5);         printf("xprintf("x=%d\n",x);=%d\n",x);        printf(“aprintf(“a=%d,b=%d,c=%d”,a,b,c);=%d,b=%d,c=%d”,a,b,c);} }运行结果:运行结果:运行结果:运行结果:x=3x=3a=1,b=2,c=20a=1,b=2,c=203.6 逗号表达式逗号表达式 3.7.1 3.7.1 运算符优先级运算符优先级运算符优先级运算符优先级§规定了在表达式求解过程中,当运算对象的左右都有运算符规定了在表达式求解过程中,当运算对象的左右都有运算符规定了在表达式求解过程中,当运算对象的左右都有运算符规定了在表达式求解过程中,当运算对象的左右都有运算符时运算的先后次序,即运算对象先做优先级高的运算。

      时运算的先后次序,即运算对象先做优先级高的运算时运算的先后次序,即运算对象先做优先级高的运算时运算的先后次序,即运算对象先做优先级高的运算§如:如:如:如:4–6*84–6*8,先做,先做,先做,先做“*”“*”运算,其结果再做运算,其结果再做运算,其结果再做运算,其结果再做“ “–”–”,因,因,因,因“*”“*”优优优优先级高于先级高于先级高于先级高于“ “–”–” §C C语言的运算符有语言的运算符有语言的运算符有语言的运算符有1515种优先级,运算级别高的运算先计算,再种优先级,运算级别高的运算先计算,再种优先级,运算级别高的运算先计算,再种优先级,运算级别高的运算先计算,再进行运算级别低的运算表达式中可通过增加括号来改变运进行运算级别低的运算表达式中可通过增加括号来改变运进行运算级别低的运算表达式中可通过增加括号来改变运进行运算级别低的运算表达式中可通过增加括号来改变运算顺序 3.7 多种类型混合运算多种类型混合运算 表表3.2 部分运算符的优先级与结合性部分运算符的优先级与结合性优先级优先级运算符运算符运算符名称运算符名称运算对象数运算对象数举举 例例结合方向结合方向 1()()圆括号圆括号!(a+b)*c自左至右自左至右 2!++、、--+ 、、-(类型标识符)(类型标识符)sizeof逻辑非逻辑非自加、自减自加、自减正号、负号正号、负号类型强制转换类型强制转换数据长度数据长度1(单目)(单目)!(a>0&&b<0)x++,,--yy=-x(int)x/3sizeof(int);;自右至左自右至左3*   /    %相相乘乘 相相除除 求求余数余数2(双目)(双目)r*r*3.14x/y    m%n自左至右自左至右4+   -相加相加 相减相减2(双目)(双目)a+b  a-b自左至右自左至右6>  <  >= <=大于大于 小于小于大于或等于大于或等于小于或等于小于或等于2(双目)(双目)x>5  x<5x>=5x<=5自左至右自左至右7==!=等于等于不等于不等于2(双目)(双目)x==5x!=5自左至右自左至右11&&逻辑与逻辑与2(双目)(双目)x>–5&&x<5自左至右自左至右12||逻辑或逻辑或2(双目)(双目)x>5||x<-5自左至右自左至右13?::条件条件3(三目)(三目)max=x>y? x:y自右至左自右至左14=  += -=  *=  /=  %=  赋值赋值2(双目)(双目)x=5,x*=5,y/=x+6自右至左自右至左15,,逗号逗号2(双目)(双目)a=b,b=c+6,c++自左至右自左至右 3.7.2 3.7.2 运算符结合方向运算符结合方向运算符结合方向运算符结合方向§规定了在表达式求解过程中,若运算对象其左右运算符优规定了在表达式求解过程中,若运算对象其左右运算符优规定了在表达式求解过程中,若运算对象其左右运算符优规定了在表达式求解过程中,若运算对象其左右运算符优先级相同时的运算方向。

      先级相同时的运算方向先级相同时的运算方向先级相同时的运算方向§结合性有两种:从左到右计算为左结合、从右到左计算为结合性有两种:从左到右计算为左结合、从右到左计算为结合性有两种:从左到右计算为左结合、从右到左计算为结合性有两种:从左到右计算为左结合、从右到左计算为右结合§如:表达式如:表达式如:表达式如:表达式1.0*5/21.0*5/2,计算结果为,计算结果为,计算结果为,计算结果为2.52.5;表达式;表达式;表达式;表达式5/2*1.05/2*1.0,计,计,计,计算结果为算结果为算结果为算结果为2.02.0 3.7 多种类型混合运算多种类型混合运算 3.7.3 3.7.3 混合运算的类型转换混合运算的类型转换混合运算的类型转换混合运算的类型转换§算术运算中的类型转换算术运算中的类型转换算术运算中的类型转换算术运算中的类型转换•隐式转换隐式转换隐式转换隐式转换––运算转换规则运算转换规则运算转换规则运算转换规则: : : :不同类型数据运算时先不同类型数据运算时先不同类型数据运算时先不同类型数据运算时先自动自动自动自动转换成同一转换成同一转换成同一转换成同一类型,类型,类型,类型,转换规则如下转换规则如下转换规则如下转换规则如下::::3.7 多种类型混合运算多种类型混合运算öö规则规则规则规则1 1::::charchar、、、、short short intint、、、、float doublefloat double 结果类型与转换后的类型相同结果类型与转换后的类型相同结果类型与转换后的类型相同结果类型与转换后的类型相同 如:如:如:如:3.0e35f*4.0e40f 3.0e35f*4.0e40f 计算结果计算结果12.0e75,,类型为类型为double。

      自动转换自动转换自动转换自动转换 3.7.3 3.7.3 混合运算的类型转换混合运算的类型转换混合运算的类型转换混合运算的类型转换3.7 多种类型混合运算多种类型混合运算§规则规则规则规则2 2 2 2:相同类型(除:相同类型(除:相同类型(除:相同类型(除charchar、、、、shortshort、、、、floatfloat型外)的操作型外)的操作型外)的操作型外)的操作数作算术运算的结果为同一类型数作算术运算的结果为同一类型数作算术运算的结果为同一类型数作算术运算的结果为同一类型 如:如:如:如: 5/2 5/2 5/2 5/2 结果为结果为结果为结果为2 2 2 2,,,,– –5/25/25/25/2结果为结果为结果为结果为– –2 2 2 2 öö规则规则规则规则3 3 3 3::::不同类型不同类型不同类型不同类型,先按,先按,先按,先按规则规则规则规则1 1转换,还有转换,还有转换,还有转换,还有不同类型,则不同类型,则不同类型,则不同类型,则再再再再按按按按低级别低级别低级别低级别 高级别,高级别,高级别,高级别,其结果类型与转换后的类型其结果类型与转换后的类型其结果类型与转换后的类型其结果类型与转换后的类型相同。

      相同自动转换自动转换如:如:如:如: 2.0f+5/2*32.0f+5/2*3,原表达式相当于,原表达式相当于,原表达式相当于,原表达式相当于2.0f+((5/2)*3)2.0f+((5/2)*3),结果,结果,结果,结果为为为为8.08.0,类型是,类型是,类型是,类型是doubledouble型 各类型的级别高低如下:各类型的级别高低如下:各类型的级别高低如下:各类型的级别高低如下:   char

      强制类型转换举例强制类型转换举例强制类型转换举例 ((((1 1))))计计计计算算算算实实实实型型型型变变变变量量量量x x的的的的整整整整数数数数部部部部分分分分与与与与y y的的的的小小小小数数数数部部部部分分分分之之之之和 写作:写作:写作:写作:( (int)x+y-(int)yint)x+y-(int)y((((2 2))))实型数据实型数据实型数据实型数据d d保留保留保留保留3 3位小数(不四舍五入)位小数(不四舍五入)位小数(不四舍五入)位小数(不四舍五入) 写作:写作:写作:写作:( (int)(dint)(d*1000)/1000.0*1000)/1000.0((((3 3))))求整型变量求整型变量求整型变量求整型变量k k的右边第的右边第的右边第的右边第n n位上的数字位上的数字位上的数字位上的数字 写作:写作:写作:写作:k/(int)pow(10,n–1)%10k/(int)pow(10,n–1)%10 。

      点击阅读更多内容
      相关文档
      2025国开山东开大《土质学与土力学》形成性考核123答案+终结性考核答案.docx 中学综合素质知识点梳理【中学教师资格证】.docx 2025国开山东开大《特许经营概论》形成性考核123答案+终结性考核答案.doc 2025年高考英语全国一卷真题(含答案).docx 2025国开山东《农民专业合作社创建与管理》形成性考核123答案+终结性考核答案.docx 2025国开山东开大《自然现象探秘》形成性考核123答案+终结性考核答案.docx 2025国开山东《消费心理学》形成性考核123答案+终结性考核答案.doc 2025国开山东《小微企业管理》形成性考核123答案+终结性考核答案.doc 2025国开山东开大《资本经营》形成性考核123答案+终结性考试答案.docx 2025国开山东《小学生心理健康教育》形考123答案+终结性考试答案.docx 2025国开《视频策划与制作》形考任务1-4答案.docx 2025国开《亲子关系与亲子沟通》形考任务234答案+期末大作业答案.docx 2025国开电大《煤矿地质》形成性考核123答案.docx 2025国开电大《冶金原理》形考任务1234答案.docx 2025国开《在线学习项目运营与管理》形考任务1234答案.doc 2025国开电大《在线教育的理论与实践》阶段测验1-4答案.docx 2024 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 环保工程师---2023 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 2025国开《液压与气压传动》形考任务一参考答案.docx 2025年春江苏开放大学教育研究方法060616计分:形成性作业2、3答案.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.