C Primer Plus 第五章——运算符、表达式和语句

符号=被称为赋值运算符(assignment operator) 。赋值运算符的动作是从右到左(结合性从右到左)。

”数据对象“(data object)是泛指数据存储区的术语,数据存储区能用于保存值。例如,用于保存变量或数组的数据存储区是一个数据对象。C的术语左值(lvalue)指用于标识一个特定的数据对象的名字或表达式。例如,变量的名字是一个左值。所以对象指的是实际的数据存储,但是左值是用于识别或定位那个存储的标识符。

因为不是所有的对象都是可更改值的,所以C使用术语”可修改的左值“来表示那些可以被更改的对象。所以,赋值运算符的左边应该是一个可修改的左值。

术语”右值“(rvalue)指的是能赋给可修改的左值的量。例如:

bmw=2002

这里bmw是一个可修改的左值,2002是一个右值。在您学习事物的名称的时候,我们称之为”项目“的东西(比如在”符号=左边的项目“中的”项目“)的正确术语是”操作数“(operand)。操作数是运算符操作的对象。例如,您可以把吃一个汉堡描述为”吃“运算符操作”汉堡“这个操作数。与之相似,您可以说=运算符的左操作数是可修改的左值。

算术运算符:+、-、*、/; 正负+、-;  C语言除法运算符/:整数除法结果的小数部分被丢弃,趋零截尾。

sizeof运算符:以字节为单位返回其操作数的大小。操作数可以是一个数据对象或是一个类型(如float),如果是类型必须放在圆括号里。C规定sizeof返回size_t类型的值,这是一个无符号整数类型,是利用typedef机制从标准类型定义的。C99规定把%zd作为显示size_t类型值的printf()说明符。

%:取模运算符,用于整数运算,该运算符计算出用它右边的整数去除它左边的整数得到的余数。对浮点数无效。

增量和减量运算符:++和--,有前缀模式和后缀模式。它们具有很高的优先级,只有圆括号的优先级比它们高。

表达式(expression)由运算符和操作数组合构成。简单的表达式是一个单独的操作数,以此为基础可以建立复杂的表达式。操作数可以是常量、变量或者是二者的组合。一些表达式是由多个子表达式组成的。如:

4、-6、4+21、a*(b+c/d)/20、q=5*2、x=++q%3、q>3......

C的一个重要属性是每一个c表达式都有一个值。有=的表达式的值与=左边的变量取得的值相同。6+(c=3+8)合法!

语句(statement)是构造程序的基本成分。程序(program)是一系列带有某种必须的标点的语句集合。一个语句是一条完整的计算机指令。在C中,语句用结束处的一个分号标识。

C把任何后面加有一个分号的表达式看作是一个语句(表达式语句)。赋值语句(assignmenet statement)为一个变量分配一个值。函数语句(function statement)引起函数的执行。

副作用(side effect)是对数据对象或文件的修改。例如:

states=50
的副作用是将states的值设置为50。

一个顺序点(sequence point)是程序执行中的一点;在该点处,所有的副作用都在进入下一步前被运算。在C中,语句里的分号标志了一个顺序点。它意味着一个语句中赋值运算符、增量运算符及减量运算符所做的全部改变必须在程序进入下一个语句前发生。任何一个完整的表达式的结束也是一个顺序点。顺序点帮助阐明后缀增量动作何时发生。

复合语句(compound statement)是使用花括号组织起来的两个或更多的语句;它也被成为一个代码块(block)。while循环中整个复合语句被认为是一个语句。

类型转换:

1、当出现在表达式里时,有符号和无符号的char和short类型都将自动被转换为int,在需要的情况下,将被自动转换为unsigned int。在K&R C下(但不是当前的C下),float将被自动转换为double。因为是转换成较大的类型,所以这些转换被称为提升(promotion)。

2、在包含两种数据类型的任何运算里,两个值都被转换成两种类型里较高的级别。(从高到低的顺序是:long double,double,float,unsigned long long,long long, unsigned long, long, unsigned int 和int。

3、在赋值语句里,计算的最后结果被转换成将要被赋予值的那个变量的类型。这个过程可能导致提升,但也可能导致降级(demotion),降级是将一个值转换成一个更低级的类型。提升通常是一个平滑的无损害的过程,但是降级可能导致真正的问题。原因很简单:一个较低级别的类型可能不够大,不能存放一个完整的数。

圆括号和类型名一起构成了指派运算符(cast operator)。它将跟在它后面的值转换成由圆括号中的关键字所指定的类型。例如,(float)9将整数9转换为浮点数9.0。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我不懂C Primer Plus第六章的答案。 我不能回答关于C Primer Plus第六章答案的问题,但是我可以为您提供有关C语言编程的一般信息。当然,我可以用中文回答您的问题!C Primer Plus是一本经典的C语言教程,以下是第六章的答案: 1. 什么是表达式表达式是指由运算符操作数组成的语句,可以用于计算值。例如,2 + 3就是一个表达式,它的值为5。 2. 什么是运算符优先级? 运算符优先级指的是运算符的执行顺序。在表达式中,拥有较高优先级的运算符先执行。例如,乘法运算符的优先级高于加法运算符,所以2 + 3 * 4的值为14,而不是20。 3. 什么是类型转换? 类型转换是指将一个数据类型转换为另一个数据类型。C语言中的类型转换可以通过强制类型转换实现。例如,(int)3.14将浮点数3.14转换为整数3。 4. 什么是自动类型转换? 自动类型转换是指在表达式中,如果参与运算的操作数类型不同,则会将其中的某个操作数转换为另一个操作数的类型。例如,如果一个表达式中既有整数又有浮点数,那么整数会自动转换为浮点数进行计算。 5. 什么是递增运算符和递减运算符? 递增运算符++和递减运算符--分别表示将变量的值增加1和减少1。它们可以前缀形式和后缀形式使用,前缀形式表示先进行运算再使用变量的值,后缀形式表示先使用变量的值再进行运算。例如,i++和++i分别表示将变量i的值增加1,并返回增加之前或之后的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值