C语言课件C程序设计解析
说明: 结合方向:自右向左。 优先级: 14。 左侧必须是变量,不能是常量或表达式。 赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型。 赋值表达式的值与变量值相等,且可嵌套。 例 3=x-2*y; a+b=3;× 例 float f; int I; i=10; f=I; 则 f=10.0 例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) 逗号运算符和表达式 形式:表达式1,表达式2,……表达式n 结合性:从左向右。 优先级: 15。 逗号表达式的值:等于表达式n的值。 用途:常用于循环for语句中。 例 a=3*5,a*4; a=3*5,a*4,a+5 例 x=(a=3,6*3); x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); 关系运算符和表达式 关系运算符 种类:< <= == >= > !=。 结合方向:自左向右。 优先级别:(如图) 关系表达式的值:用1表示真和用0表示假。 < <= > >= == != 优先级6(高) 优先级7(低) 例 c>a+b //c>(a+b) a>b!=c //(a>b)!=c a==bc //a=(b>c) 例 int a=3,b=2,c=1,d,f; a>b (a>b)==c b+cb f=a>b>c 关系运算注意: 例 若a=0; b=0.5; x=0.3; 则 a<=x<=b的值为 0 例 5>4>3 值为 0 例 int i=1, j=7,a; a=i+(j%4!=0); 则a=2 例 ‘a’>0 结果为 1 ‘A’>100 结果为 0 例 注意区分“=”与“==” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”); 例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0==1.0 结果为0 可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6 逻辑运算符和表达式 逻辑运算符 种类: ! && || 逻辑运算规则: !-- 非真得假;非假得真; &&-- 有假得0,无假得1; || -- 有真得真,无真得假。 C语言中,运算量: 0表示“假”; 非0表示“真”。 运算结果: 0表示“假”; 1表示“真”。 优先级: 结合方向: 例:判断下列表达式的值: 若:a=4;b=5; !a a&&b a||b !a||b 4&&0||2 5>3&&2||8<4-!0 ‘c’&&‘d’ ! :从右向左 && :从左向右 || :从左向右 特殊情况: 逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。如:a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d) 条件运算符与表达式 一般形式: expr1 ? expr2 : expr3 执行过程: 功能:相当于条件语句,但不能取代一般if语句 条件运算符可嵌套: 如 x> 0 ? 1 : (x<0 ? -1:0) 优先级: 13 结合方向:自右向左。 如 a>b?a:c>d?c:d 相当于: a>b?a:(c>d?c:d) expr1、expr2、expr3类型可不同,表达式值取较高的类型 结构化程序设计的三种基本结构:顺序结构、选择结构循环结构。程序设计应遵守结构化原则。 C语句的种类: 控制语句 : 完成一定的控制功能。 函数调用语句: 完成函数调用