第3章运算符和表达式 3.1概述 32运算符及表达式简介
第3章 运算符和表达式 3.1概述 3.2运算符及表达式简介
3.1概述 C语言的运算符非常丰富,使用方法也非常灵活,这是 C语言的主要特点。C语言有44个运算符,其中一部分 C语言的语句虽然高于硬件指令级,但有些运算符却和 硬件指令级接近,基本上反映了计算机硬件的操作,能 对特定的物理地址进行访问。所有这些特点使C语言代 替汇编语言成为可能。正是C语言的众多运算符、优先 级和结合性,给学过其他高级语言的程序编写人员带来 了困扰。所以,突破"先入为主"的影响,使初学者尽快 越过运算符和表达式这一关是非常重要的
❖ 3.1概述 ❖ C语言的运算符非常丰富,使用方法也非常灵活,这是 C语言的主要特点。C语言有44个运算符,其中一部分 与其他的高级语言相同,而另外一部分与汇编语言相似。 C语言的语句虽然高于硬件指令级,但有些运算符却和 硬件指令级接近,基本上反映了计算机硬件的操作,能 对特定的物理地址进行访问。所有这些特点使C语言代 替汇编语言成为可能。正是C语言的众多运算符、优先 级和结合性,给学过其他高级语言的程序编写人员带来 了困扰。所以,突破"先入为主"的影响,使初学者尽快 越过运算符和表达式这一关是非常重要的
31.1c语言运算符 基本算术运算符(+,一,“,,%) 算术运算符 增1减1运算符(++ 关系运算符(>,< 逻辑运算符(!,&&,‖) 拭值运算符 基本赋值运算符(=) 算术自反赋值运算符(十=,=,“=,/=,%=) 基本运算符 逗号运算符(《,》) 条件运算符(?:) C语言运算符 数据长度运算符( sizeof) 位逻辑运算符(~,&,|,A) 位运算符{位移位运算符(≤,》) 位自反赋值运算符(&=,|=,∧=,《=,》=) 强制运算符 下标运算符 专用运算符 成员运算符 指针运算符
3.1.1 C语言运算符
3.1.1c语言运算符 令运算符必须有运算对象。C语言中的运算符的运算对象 如果是一个,称单目运算;运算对象是两个,称双目运 算;也有运算对象是三个的,称三目运算。C语言中对 运算符级别有明确规定,称为运算符的"优先级"。同级 运算符还规定了结合性,这种结合性是其它高级语言的 运算符所没有的。若是从左向右结合称为"左结合",从 右向左结合称为右结合
3.1.1 C语言运算符 ❖ 运算符必须有运算对象。C语言中的运算符的运算对象 如果是一个,称单目运算;运算对象是两个,称双目运 算;也有运算对象是三个的,称三目运算。C语言中对 运算符级别有明确规定,称为运算符的"优先级"。同级 运算符还规定了结合性,这种结合性是其它高级语言的 运算符所没有的。若是从左向右结合称为"左结合",从 右向左结合称为"右结合
31.2c语言表达式 令由常量、变量、函数和运算符组合起来的式子称为“表 达式”,根据运算规则进行运算后得出来的结果称为 “表达式的值”。 令运算符指出表达式中单个或多个操作数如何参与运算 表达式计算所产生的值依赖于表达式中运算符的优先级 及结合性 ①用圆括号括起来的表达式是初等表达式。任何操作数都 可以包含在圆括号中,用圆括号括起来的表达式对数据 类型和它的值没有影响。圆括号主要用于改变表达式计 算的次序。 ②使用方括号表示的数组元素的下标表达式是初等表达式, 例如X[5]、aray[i[j]都是初等表达式
3.1.2 C语言表达式 ❖ 由常量、变量、函数和运算符组合起来的式子称为“表 达式”,根据运算规则进行运算后得出来的结果称为 “表达式的值”。 ❖ 运算符指出表达式中单个或多个操作数如何参与运算。 表达式计算所产生的值依赖于表达式中运算符的优先级 及结合性。 ①用圆括号括起来的表达式是初等表达式。任何操作数都 可以包含在圆括号中,用圆括号括起来的表达式对数据 类型和它的值没有影响。圆括号主要用于改变表达式计 算的次序。 ②使用方括号表示的数组元素的下标表达式是初等表达式, 例如x[5]、array[i][j]都是初等表达式
312C语言表达式 ③使用">"或"."表示结构体或共用体成员的成员选择表 达式是初等表达式,例如:p->a和 litem.b是两个初等 表达式。 ④标识符、常量是初等表达式。例如,123、" TURBOC" string和ARRA是四个初等表达式 ⑤左值表达式是初等表达式。所谓的左值表达式就是能表 示存储单元的表达式。例如: int x, a, b, C: x=a/b+c 这是一个赋值表达式语句;又简称赋值语句,其中x称 为左值表达式它指向一个可修改内容的存储单元,而 a/b+C是一算术表达式
③使用"->"或"."表示结构体或共用体成员的成员选择表 达式是初等表达式,例如:p->a和intem.b是两个初等 表达式。。 ④标识符、常量是初等表达式。例如,123、"TURBOC"、 string和ARRA是四个初等表达式。 ⑤左值表达式是初等表达式。所谓的左值表达式就是能表 示存储单元的表达式。例如: int x,a,b,C; x=a/b+c; 这是一个赋值表达式语句;又简称赋值语句,其中x称 为左值表达式,它指向一个可修改内容的存储单元,而 a/b+c是一算术表达式。 3.1.2 C语言表达式
32运算符和表达式简介 3.2.1算术运算符和算术表达式 算术运算符用于各类数值运算,包括+、-、*、/、%、 ++、-七种,表3-1列出了各种算术运算符 1.基本算术运算符 基本算术运算包括: +(单目取正)、-(单目取负)、+(加)、-(减)、* (乘)、/(除)、%(取模) 基本算术运算符的优先级 上+(单日取正)、-(单目取负)*(乘)√(除)、%(取模)+(加)、-(减) 低
3.2 运算符和表达式简介 ❖ 3.2.1 算术运算符和算术表达式. 算术运算符用于各类数值运算,包括+、-、 * 、/、%、 ++、--七种,表3-1列出了各种算术运算符。 1.基本算术运算符 基本算术运算包括: +(单目取正)、-(单目取负)、+(加)、-(减)、* (乘)、/(除)、%(取模) 基本算术运算符的优先级
运算优先级规则 令在基本算术运算符中,单目运算符的结合性为右结合, 双目运算的结合性为左结合。 C程序中,称表达式的运算结果为表达式的值。C语言 规定,在表达式求值时,须按运算符优先级的高低次序 执行。对算术运算而言,必须遵循先括号内后括号外, 先乘、除及求余运算,后加减的运算优先级规则。 令C语言中,运算符的运算优先级共分为15级。1级最高, 15级最低。在表达式中,优先级较高的先于优先级较低 的进行运算。而在一个运算量两侧的运算符优先级相同 时,则按运算符的结合性所规定的结合方向处理
运算优先级规则 ❖ 在基本算术运算符中,单目运算符的结合性为右结合, 双目运算的结合性为左结合。 ❖ C程序中,称表达式的运算结果为表达式的值。C语言 规定,在表达式求值时,须按运算符优先级的高低次序 执行。对算术运算而言,必须遵循先括号内后括号外, 先乘、除及求余运算,后加减的运算优先级规则。 ❖ C语言中,运算符的运算优先级共分为15级。1级最高, 15级最低。在表达式中,优先级较高的先于优先级较低 的进行运算。而在一个运算量两侧的运算符优先级相同 时,则按运算符的结合性所规定的结合方向处理
2.自增自减运算符 冷自增运算符(+)的功能是使变量的值自增1,自减运算 的功能是使变量的值自减1。百增、自减运算符只 能用变量,自增、自减运算符的优先级高于基本算术 运算符,百增、自减运算符具有右结合性。 令自增、自减有前缀和后缀两种形式: 令+)变量自增1后再参与运算; 令计+变量参与运算后,i的值再自增1; 令-变量自减1后再参与运算; 令j-变量参与运算后,i值再自减1
2.自增自减运算符 ❖ 自增运算符(++)的功能是使变量的值自增1,自减运算 符(--)的功能是使变量的值自减1。自增、自减运算符只 能用于变量,自增、自减运算符的优先级高于基本算术 运算符,自增、自减运算符具有右结合性。 ❖ 自增、自减有前缀和后缀两种形式: ❖ ++i变量自增1后再参与运算; ❖ i++变量参与运算后,i的值再自增1; ❖ --i变量自减1后再参与运算; ❖ i-- 变量参与运算后,i的值再自减1
2.自增自减运算符 冷所有的自增运算符++均可以相应地变成自减运算符(-)。 令++a表示先将变量a的值增加1,再使用变量a,“b=++a 相当于“a=a+1;b=a;"。 a++表示先使用变量a的值,再将变量a的值增加1 “b=a++”相当于“b=a,a=a+1; 当++、--运算符作为函数的参数时,要注间参数表达式 的运算顺序是从右到左
❖ 所有的自增运算符++均可以相应地变成自减运算符(--)。 ❖ ++a表示先将变量a的值增加1,再使用变量a,“b=++a” 相当于“a=a+1;b=a;”。 ❖ a++表示先使用变量a的值,再将变量a的值增加1, “b=a++”相当于“b=a,a=a+1;”。 ❖ 当++、--运算符作为函数的参数时,要注间参数表达式 的运算顺序是从右到左。 2.自增自减运算符