常量、变量及C的数据类型 2.1常量、变量及C的数据类型2、1、1常量:在程序的运行过程中,其值不能改变的量称为常 量。注意:1·常量有不同的类型,如12、0、-3为整型常量,4.6、-1.23为实型常量 d’字符常量。常量可以从字面形式即可判断-字面常量或直接常量。2·符号常量 define pi3.1416使用符号常量的好处:(1)含义清楚、见名知意。(2)修改方便、一改全 改 2-1:符号常量应用 #define PI 3.14 float area rea=10*10*PI printf("area=%f \n", area 结果:area=314.000 2、1、2变量:在程序的运行过程中,其值可以改变的量称为变量。注意:1.变量名(用标识符表 示)、变量在内存中占据的存储单元、变量值三者关系。变量名在程序运行过程中不会改变,变量的 值可以改变。变量名遵守标识符准则。 变量名 日 变量值 存储单元 C语言中变量:“先定义,后使用”。即就是说,C要求对所有用到的变量做强制定义。1)只有申 明过的变量才可以在程序中使用,这使得变量名的拼写错误容易发现。 BASIC却不是这样。有时你会用 两个相近似变量而你根本没有发现,却当作同一个变量在使用。2)申明的变量属于确定的类型,编 译系统可方便地检查变量所进行运算的合法性。3)在编译时根据变量类型可以为变量确定存储空间 先定义后使用”使程序效率高。2、1、3C的数据类型2、1、3、1整型常数的表示方法三种形 (+/-)1).十进制例如123,-456,0。2)八进制。以0开头,后面跟几位的数字(0-7)
常量、变量及 C 的数据类型 2 . 1 常量、变量及 C 的数据类型 2、1、1 常量:在程序的运行过程中,其值不能改变的量称为常 量。 注意: 1• 常量有不同的类型,如 12、0、-3 为整型常量,4.6、-1.23 为实型常量, ' a ' 、' d '字符常量。常量 可以从字面形式即可判断 -字面常量或直接常量。 2• 符号常量 #define PI 3.1416 使用符号常量的好处: (1)含义清楚、见名知意。 (2) 修改方便、一改全 改。 例 2-1:符号常量应用 #define PI 3.14 main() { float area; area=10*10*PI; printf("area=%f\n",area); } 结果: area=314.000000 2、1、2 变量:在程序的运行过程中,其值可以改变的量称为变量。 注意: 1. 变量名(用标识符表 示)、变量在内存中占据的存储单元、变量值三者关系。 变量名在程序运行过程中不会改变,变量的 值可以改变。变量名遵守标识符准则。 2、C 语言中变量:“先定义,后使用”。即就是说,C 要求对所有用到的变量做强制定义。 1)只有申 明过的变量才可以在程序中使用,这使得变量名的拼写错误容易发现。BASIC 却不是这样。有时你会用 了两个相近似变量而你根本没有发现,却当作同一个变量在使用。 2)申明的变量属于确定的类型,编 译系统可方便地检查变量所进行运算的合法性。 3)在编译时根据变量类型可以为变量确定存储空间, “先定义后使用”使程序效率高。 2、1、3 C 的数据类型 2、1、3、1 整型常数的表示方法 三种形 式:( +/-) 1). 十进制 例如 123,-456,0。 2)八进制。以 0 开头,后面跟几位的数字(0-7)
例如:01235(123)8=(83)10.-01(-1)8=(-9)10。3)+六进制。以0x开头,后面跟几 的数字(0-9,A-F)。例如:0x123=291,-0x12=-18。4)整型常量的类型(整型常数的后缀 在整型变量部分介绍,这里只要知道怎么表示。整型常量后可以用:u或U明确说明为无符号整型 数1或L明确说明为长整型数.2.1、3、2整型变量1.整型数据在内存中的存放形式数据在内存中 以二进制形式存放,事实上以补码形式存 画ppp。。。。。11。 数据存放示意图 数据在内存中实际存放的情况(补码表示) 倣。 l:定义一个整型变量i=10,补充知识(参考《微机原理》等课程):1)带符号数的表示,原 码、反码、补码。2)原码-补码相互转化。正数的补码与其原码相同,负数的补码是其对应的原码数 值位按位取反+1 运算符和表达式 2.2运算符和表达式 算符:狭义的运算符是表示各种运算的符 表达式:使用运算符将常量、变量、函数连接起来,构成表达式。 C语言运算符丰富,范围很宽,把除了控制语句和输入/输出以外的几乎所有的基本操都作为运算 处理,所以 c语言运算符可以看作是操作符。C语言丰富的运算符构成C语言丰富的表达式(是运算符就可以构成 表达式)。运 算符丰富、表达式丰富、灵活。 在C语言中除了提供一般高级语言的算术、关系、逻辑运算符外,还提供赋值符运算符,位操作 算符、自增 自减运算符等等。甚至数组下标,函数调用都作为运算符 2.1算术运算符和算术表达式 算术运算符 +(加法运算符。如3+5) (减法运算符或负值运算符。如5-2,-3) *(乘法运算符。如3*5) /(除法运算符。如5/3,5.0/3)
例如: 0123=(123)8=(83)10;-011=(-11)8=(-9)10。 3) 十六进制。以 0x 开头,后面跟几 位的数字(0-9,A-F)。 例如: 0x123=291,-0x12=-18。 4) 整型常量的类型(整型常数的后缀) -在整型变量部分介绍,这里只要知道怎么表示。 整型常量后可以用: u 或 U 明确说明为无符号整型 数 l 或 L 明确说明为长整型数. 2.1、3、2 整型变量 1. 整型数据在内存中的存放形式 数据在内存中 以二进制形式存放,事实上以补码形式存 放。 例 如:定义一个整型变量 i=10, 补充知识(参考《微机原理》等课程): 1)带符号数的表示,原 码、反码、补码。 2)原码-补码相互转化。正数的补码与其原码相同,负数的补码是其对应的原码数 值位按位取反+1。 运算符和表达式 2 . 2 运算符和表达式 运算符:狭义的运算符是表示各种运算的符号。 表达式:使用运算符将常量、变量、函数连接起来,构成表达式。 C 语言运算符丰富,范围很宽,把除了控制语句和输入/输出以外的几乎所有的基本操都作为运算 符处理,所以 C 语言运算符可以看作是操作符。C 语言丰富的运算符构成 C 语言丰富的表达式(是运算符就可以构成 表达式)。运 算符丰富、表达式丰富、灵活。 在 C 语言中除了提供一般高级语言的算术、关系、逻辑运算符外,还提供赋值符运算符,位操作 运算符、自增 自减运算符等等。甚至数组下标,函数调用都作为运算符. 2、2 .1 算术运算符和算术表达式 1、算术运算符 +(加法运算符。如 3+5) -(减法运算符或负值运算符。如 5-2,-3) *(乘法运算符。如 3*5) /(除法运算符。如 5/3,5.0/3)
%(模运算符或求余运算符,%要求两侧均为整型数据。如7%4的值为3) 除了负值运算符-单目运算符外,其它都是双目运算符 说明:〈变量〉(赋值符〉〈表达式 (1)两个整数相除的结果为整数,如5/3的结果为1,舍去小数部分。但是如果除数或被除数中 有一个为负值, 则舍入的方向是不固定的,多数机器采用“向0取整”的方法(实际上就是舍去小数部分,注意:不 是四舍五入 (2)如果参加+,-,*,/运算的两个数有一个为实数,则结果为 double型,因为所有实数都按 double型进行计算 (3)求余运算符%,要求两个操作数均为整型,结果为两数相除所得的余数。求余也称为求模 般情况,余数的符号与被除数符号相同 如:-8%5=-3:8%-5=3 算术表达式 算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式 称为算术 供小下面题个法表达 C语言算术表达式的书写形式与数学表达式的书写形式有一定的区别: (1)C语言算术表达式的乘号(*)不能省略。例如:数学式b2-4ac,相应的C表达式应该写 成:b*b-4*a*C (2)C语言表达式中只能出现字符集允许的字符。例如,数学r2相应的C表达式应该写成: PI*rkr (其中PI是已经定义的符号常量) (3)C语言算术表达式不允许有分子分母的形式。例如,(a+b)/(c+d) (4)C语言算术表达式只使用园括号改变运算的优先顺序(不要指望用仆[])。可以使用多层圆括 右括号必须配对,运算时从内层括号开始,由内向外依次计算表达式的值 3、(算术)运算符的优先级与结合性(P.233附录IV) c语言规定了进行表达式求值过程中,各运算符的“优先级”和“结合性”。 (1)C语言规定了运算符的“优先级”和“结合性”。在表达式求值时,先按运算符的“优先 别”高低 序执行 如表达式:a-b*C等价于a-(b*c),“*”运算符优先级高于“-”运算符 (2)如果在一个运算对象两侧的运算符的优先级别相同,则按规定的“结合方向”处理。 如:a-b+c,到底是(a-b)+c还是a-(b+c)?(b先与a参与运算还是先于c参与运算?) 查附录I可知:+/运算优先级别相同,结合性为“自左向右”,即就是说b先与左边的a结合。所 以a-b+c等价 (a-b) 左结合性(自左向右结合方向):运算对象先与左面的运算符结合 右结合性(自右向左结合方向):运算对象先与右面的运算符结合 (3)在书写多个运算符的表达式时,应当注意各个运算符的优先级,确保表达式中的运算符能以
%(模运算符或求余运算符,%要求两侧均为整型数据。如 7%4 的值为 3)。 除了负值运算符 -单目运算符外,其它都是双目运算符。 说明:〈变量〉〈赋值符〉〈表达式〉 (1) 两个整数相除的结果为整数,如 5/3 的结果为 1,舍去小数部分。但是如果除数或被除数中 有一个为负值, 则舍入的方向是不固定的,多数机器采用“向 0 取整”的方法(实际上就是舍去小数部分,注意:不 是四舍五入 )。 (2)如果参加 +,-,*,/运算的两个数有一个为实数,则结果为 double 型,因为所有实数都按 double 型进行计算。 (3)求余运算符 %,要求两个操作数均为整型,结果为两数相除所得的余数。求余也称为求模。 一般情况,余数的符号与被除数符号相同。 例如: -8%5=-3;8%-5=3 2、算术表达式 算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式 子,称为算术 表达式。运算对象可以是常量、变量、函数等。 例如,下面是一个合法的 C 算术表达式。a*b/c-1.5+ ' a ' 。 注意: C 语言算术表达式的书写形式与数学表达式的书写形式有一定的区别: (1)C 语言算术表达式的乘号(*)不能省略。例如:数学式 b 2 -4ac,相应的 C 表达式应该写 成:b*b-4*a*c。 (2) C 语言表达式中只能出现字符集允许的字符。例如,数学πr 2 相应的 C 表达式应该写成: PI*r*r。 (其中 PI 是已经定义的符号常量) (3)C 语言算术表达式不允许有分子分母的形式。例如,(a+b)/(c+d)。 (4)C 语言算术表达式只使用圆括号改变运算的优先顺序(不要指望用{}[])。可以使用多层圆括 号,此时左 右括号必须配对,运算时从内层括号开始,由内向外依次计算表达式的值. 3、(算术)运算符的优先级与结合性(P.233 附录 IV) C 语言规定了进行表达式求值过程中,各运算符的“优先级”和“结合性”。 ( 1)C 语言规定了运算符的“优先级”和“结合性”。在表达式求值时,先按运算符的“优先 级别”高低 次序执行。 如表达式: a-b*c 等价于 a-(b*c),“*”运算符优先级高于“-”运算符。 ( 2)如果在一个运算对象两侧的运算符的优先级别相同,则按规定的“结合方向”处理。 例如: a-b+c,到底是(a-b)+c 还是 a-(b+c)?(b 先与 a 参与运算还是先于 c 参与运算?) 查附录 IV 可知:+/-运算优先级别相同,结合性为“自左向右”,即就是说 b 先与左边的 a 结合。所 以 a-b+c 等价 于(a-b)+c。 左结合性(自左向右结合方向):运算对象先与左面的运算符结合。 右结合性(自右向左结合方向):运算对象先与右面的运算符结合。 (3)在书写多个运算符的表达式时,应当注意各个运算符的优先级,确保表达式中的运算符能以
确的顺序 与运算。对于复杂表达式为了清晰起见可以加圆括号“()”强制规定计算顺序 关系运算和逻辑运算 2.3关系运算和逻辑运算 关系运算是逻辑运算中比较简单的一种,“关系运算”就是“比较运算”。即将两个值进行比较 判断是否符合或满足给定的条件。如果符合或满足给定的条件,则称关系运算的结果为“真” 如果不符合或不满足给定的条件,则称关系运算的结果为“假”。例2-1中,x>0是比较运算,也 就是关系运算,“>”是一种关系运算符。假如x=4,那么x>0条件满足,就是说关系运算x>0的结 为“真”。2.3.1关系运算符及其优先次序C语言提供6种关系运算符: ①< (小于) ②< (小于或等于) 优先级相同(高) ③> (大于) (大于或等于) ⑤ (等于) 优先级相同(低) (不等于) 关于优先次序:1.前4种关系运算符的优先级别相同,后两种也相同。前4种高于后两种 关系运算符的优先级低于算术运算符。3.关系运算符的优先级高于赋值运算符。例2 等价于 〉(a+b):关系运算符的优先级低于算术运算符 等价于 (a>b)==c:“>”优先级高于 等价于 “<”优先级高于 =b> 等价 a=(b>c) 关系运算符的优先级高于赋值运算符 3.1.2关系表达式用关系运算符将两个表达式(算术、关系、逻辑、赋值表达式等)连接 起来所构成的表达式,称为关系表达式。关系表达式的值是一个逻辑值,即“真”或“假” 语 没有逻辑型数据,以1代表“真”,以0代表“假”。例2-3:假如a=3,b=2,c=1,则:关系表 达式“a>b”的值为“真”,即表达式的值为:1。关系表达式“b+c<a”的值为“假”,即表达式 的值为:0 2逻辑运算符和逻辑表达式逻辑表达式:用逻辑运算符(逻辑与、逻辑或 逻辑非)将关系表达式或逻辑量连接起来构成逻辑表达式 逻辑运算符及其优先顺序C语言 提供三种逻辑运算符:(1)&逻辑与(相当日常生活中:而且,并且,只在两条件同时成立时 为“真”)(2)11逻辑或(相当日常生活中:或,两个条件只要有一个成立时即为“真”) (3) 逻辑非(条件为真,运算后为假,条件为假,运算后为真)“&&”,“‖”是双目运算 是单目运算符。例 逻辑运算举例 若a、b为真,则 为真 1b若a、b之一为真,则a||b为真。!a若a为真,则!a为假,反之若a为假,则 为真。表2.1为逻辑运算的真值表
正确的顺序 参与运算。对于复杂表达式为了清晰起见可以加圆括号“()”强制规定计算顺序。 关系运算和逻辑运算 2.3 关系运算和逻辑运算 关系运算是逻辑运算中比较简单的一种, “关系运算”就是“比较运算” 。即将两个值进行比较, 判断是否 符合或满足给定的条件。 如果 符合或满足 给定的条件,则称关系运算的结果为“真” ; 如果不符合或不满足给 定的条件,则称关系运算的结果为 “假” 。 例 2-1 中,x>0 是比较运算,也 就是关系运算,“>”是一种关系运算符。 假如 x=4,那么 x>0 条件满足,就是说关系运算 x>0 的结 果为“真”。 2.3.1 关系运算符及其优先次序 C 语言提供 6 种关系运算符: 关于优先次序: 1. 前 4 种关系运算符的优先级别相同,后两种也相同。前 4 种高于后两种。 2. 关系运算符的优先级低于算术运算符。 3. 关系运算符的优先级高于赋值运算符。 例 2-2: c> a+b 等价于 c>( a+b ) ;关系运算符的优先级低于算术运算符 a>b==c 等价于 (a>b)==c ;“>”优先级高于“==” a==b<c 等价于 a==(b<c) ;“<”优先级高于“==” a=b>c 等价于 a=(b>c) ;关系运算符的优先级高于赋值运算符。 2 .3.1.2 关系表达式 用关系运算符将两个表达式( 算术 、关系、逻辑、 赋值表达式 等)连接 起来所构成的表达式,称为关系 表达式。 关系表达式的值是一个逻辑值,即“真”或“假”。 C 语 言没有逻辑型数据,以 1 代表“真”,以 0 代表“假 ”。 例 2-3:假如 a=3,b=2,c=1,则: 关系表 达式“ a>b”的值为“真”,即表达式的值为:1。 关系表达式“ b+c <a”的值为“假”,即表达式 的值为:0。 2.3.2 逻辑运算符和逻辑 表达式 逻辑表达式:用逻辑运算符(逻辑与、逻辑或、 逻辑非)将关系表达式或逻辑量连接起来构成逻辑表达式。 2.3.2.1 逻辑运算符及其优先顺序 C 语言 提供三种逻辑运算符: ( 1)&& 逻辑与(相当日常生活中:而且,并且,只在两条件同时成立时 为“真”) ( 2)|| 逻辑或(相当日常生活中: 或 ,两个条件只要有一个成立时即为“真”) ( 3)! 逻辑非(条件为真,运算后为假,条件为假,运算后为真)“ &&”,“||”是双目运算 符, “!” 是单目运算符 。 例 2-4:逻辑运算举例 a&&b 若 a、b 为真,则 a&&b 为真。 a||b 若 a、b 之一为真,则 a||b 为真。 ! a 若 a 为真,则!a 为假,反之若 a 为假,则! a 为真。 表 2.1 为逻辑运算的真值表
&&b 真真假假 真假真假 假假假 真真真假 在一个逻辑表达式中如果包含多个逻辑运算符,则按照以下的优先顺序:(1)!(非)&k(与) 1(或),“!”为三者中最高。(2)逻辑运算符中的&&和|低于关系运算符,!高于算术运算 符。例2-5: b&&x >y 等价于(ab)&&(x>y)a==b||x==y等价 (a==b)I(x=y)! alla>b 等价于 (!a)||(a>b) 选择结构、循环结构与C语句 2.4选择结构、循环结构与C语句 tch,shil,do…hile,for, break, continue, return语句) 2.41选择结构 选择结构是三种基本结构(顺序、选择、循环)之一。作用是根据所指定的条件是否满足,决定 从给定的两组 操作选择其中的一种。 C语言中的选择结构是用if语句实现的。if语句的常用的形式是 if(关系/逻辑表达式)语句1ese语句2 2.4-1:用C语言实现图示的分段函数。 数学上描述此分段函数:1,x>0y=-1,其它用C语言描述:if(x>0)y=1; else y=-1;其中:x> 个关系表达式,“〉”是一个关系运算符。x>0关系表达式成立,也就是说由关系表达式x)0构成 的逻辑运算为真时,y<=1,否则y<=-1。if语句用来判定所给定的条件是否满足,根据判定的结果 (真或假)决定执行给出的两种操作之一。2.42if语句三种形式1.if(表达式)语句例如:
a b a&&b a||b 真 真 真 真 真 假 假 真 假 真 假 真 假 假 假 假 a !a 真 假 假 真 在一个逻辑表达式中如果包含多个逻辑运算符,则按照以下的优先顺序: ( 1)!(非)-&&(与)- ||(或),“!”为三者中最高。 ( 2)逻辑运算符中的&&和||低于关系运算符,!高于算术运算 符。 例 2-5: • b&&x >y 等价于 (a>b)&& ( x>y) a==b||x==y 等价 于 (a==b)||(x==y) ! a||a >b 等价于 (!a)||(a>b) 选择结构、循环结构与 C 语句 2.4 选择结构、循环结构与 C 语句 (if, switch, while, do…while, for, break, continue, return 语句 ) 2.4.1 选择结构 选择结构是三种基本结构(顺序、选择、循环)之一。作用是根据所指定的条件是否满足,决定 从给定的两组 操作选择其中的一种。 C 语言中的选择结构是用 if 语句实现的。if 语句的常用的形式是: if( 关系/逻辑表达式 )语句 1 else 语句 2 例 2.4-1:用 C 语言实现图示的分段函数。 数学上描述此分段函数: 1, x>0 y= -1, 其它 用 C 语言描述: if(x>0)y=1;else y=-1; 其中: x>0 是一个关系表达式,“>”是一个关系运算符。x>0 关系表达式成立,也就是说由关系表达式 x>0 构 成 的逻辑运算为真时,y<=1,否则 y<=-1。 if 语句用来判定所给定的条件是否满足,根据判定的结果 (真或假)决定执行给出的两种操作之一。 2 . 4.2 i f 语句三种形式 1. if(表达式)语句 例如: