第2章 C语言数据类型_
关系运算符 种类:< <= == >= > != 结合方向:自左向右 优先级别: < <= > >= == != 优先级6(高) 优先级7(低) 例 c>a+b //c>(a+b) a==bb (a>b)==c f=a>b>c //表达式值1 //表达式值1 //f=0 2.3 运算符与表达式 关系表达式的值:是逻辑值“真”或“假”,用1和0表示 2.3.3 关系运算符和表达式 (1)不要将“==”错写成“=” (3)用“= =”比较两个浮点数时,由于存储误差的原因,有时会出错误结果。 如 1.0/7.0*7.0==1.0 结果为 假 可改写为:fabs(1.0/7.0*7.0-1.0)<1e-5 (2)对字符比较是比较ASCII码 例 ‘a’>0 结果为 ‘A’>100 结果为 1 0 关系运算注意(1) 2.3 运算符与表达式 0 a b !a !b a&&b a||b 真 假 真 假 假 假 真 真 逻辑运算符: 非! 与&& 或|| 逻辑运算真值表 真 假 假 假 假 假 真 真 假 假 真 真 真 假 真 真 C语言中,运算量: 0表示“假”, 非0表示“真”, 运算结果: 0表示“假”, 1表示“真”, 2.3 运算符与表达式 2.3.4 逻辑运算符和表达式(1) ! (2) && (11) || (12) 高 低 例 a<=x && x<=b !a||a>b 优先级: 结合方向: ! :从右向左 && :从左向右 || :从左向右 // (a<=x) && (x<=b) //(!a)||(a>b) 2.3 运算符与表达式 2.3.4 逻辑运算符和表达式(2) 例 a=4;b=5; !a a&&b a||b !a||b 4&&0||2 值为1 值为0 值为1 值为1 值为1 2.3 运算符与表达式 2.3.4 逻辑运算符和表达式(3) 例 a&&b 例 a||b 例 a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d) 短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符 2.3 运算符与表达式 //只在a为真时,才判别b的值; //只在a为假时,才判别b的值; //结果m=0,n=1 2.3.4 逻辑运算符和表达式(4) 基本赋值运算符 符号: = 格式: 变量标识符 = 表达式 作用: 将一个数据(常量或表达式)赋给一个变量 例 a=3; c=d+2; 2.3 运算符与表达式 结合方向:自右向左 左侧必须是变量,不能是常量或表达式 例 3=x-2*y; a+b=3; 赋值转换规则: 使赋值号右边表达式值自动转换成其左边变量的类型 例 float f; int i; i=2.56; //结果i=2; i=10; f=i; 则 f=10.0 赋值表达式的值与变量值相等,且可嵌套 例: a=b=c=5 a=(b=10)/(c=2) //表达式值为5,a,b,c值为5 //表达式值5,a=5,b=10,c=2 2.3.5 赋值运算符和表达式 2.3 运算符与表达式 例: a+=3 a=a+3 x*=y+8 x=x*(y+8) x%=3 x=x%3 复合赋值运算符 += -= *= /= %= 《= 》= &= ^= |= 2.3 运算符与表达式 一般形式: 表达式1 ? 表达式2 : 表达式3 执行过程 表达式1 取表达式2值 取表达式3值 非0 =0 例 求 a+|b|的表达式? 例 (a==b)?’Y’:’N’ (8%2==1)?1:0 条件运算符可嵌套 如 x>0?1:(x<0?-1:0) 优先级: 13 结合方向:自右向左 如 a>b?a:c>d?c:d ? a>b?a:(c>d?c:d) 2.3.6 条件运算符和表达式 2.3 运算符与表达式 一般形式:sizeof(变量名) sizeof(类型名) 功能: