c语言此c语言求表达式的值值为

C语言研究性学习的路线 现行的多數C语言教材有太多的误区不仅不能给读者提供有效的学习线索,还常常“误导”读者于是,“死记硬背”便成了学习C语言的唯一选择本文 以拙作《新编C语言程序设计教程》(清华大学出版社出版,配套视频)为基础探讨了C语言的研究性学习。
  在后面加一个分号(;)C语言表达式就变成了C语句,此时计算机执行C语句的过程就是对表达式求值的过程因此表达式求值实际上模拟了计算机的计算。
  C语言c语言求表达式的值重要特征是每个表达式都有一个确定的值及类型求值时需根据操作符的优先级和结合性来确定运算顺序。能否顺利地求出c语言求表达式的值值可作为判断C语言表达式是否合法的依据
  从表3-1可知,C语言操作符的种类繁多但是数学上常见的一些运算在C语言中却并没有相关的操作符,如求平方根、求绝对值、幂运算等不过C语言提 供了相应功能的库函数,如sqrt函数、fabs函数、pow函数等与printf函数类似,使用这些库函数需要在程序中包含math.h头文件 (#include <math.h>)
  1. 每个表达式都有一个确定的值。
  2. 利用数学库函数写出常见的數学式子
  3. 查表根据优先级和结合性利用加括号的方式确定复杂的c语言求表达式的值求值顺序,如3+5*2为(3+(5*2));i=j=k=23为(i=(j=(k=23)))
  赋值操作符的优先級倒数第二,右结合
  1. 赋值操作符“=”读作“赋值为”。
  3. 如何判断表达式i=j=k=23的合法性
  4. 理解复合赋值操作符的本质,洳i*=a+b;
  类型不匹配时的赋值操作。
  1. 整型之间相互赋值
1.1 编码长度相同但有无符号数和有符号数的区别,如unsigned short型和short型此时只是简单哋把被赋值变量的状态设置成赋值变量的存储状态。赋值后两者的值通常不同如有unsigned uh; short h=-1; ,则uh=h;后uh的值为65535
h=-1;则l=uh后,l的值为65535;而l=h后l的值为-1。由练習2.6可知编码长度增加而值不变时编码的变化规律。当b的编码长度大于 a时赋值操作只能使a的状态与b的部分字节状态一致,舍弃了b中高位嘚状态赋值后两者的值通常不同。
  2. 整型与浮点型之间的相互赋值
  整数可以看作是小数部分为0的浮点数而浮点型变量向整型變量赋值时会舍弃小数部分。
  1. 编程时尽量使用安全的赋值操作(赋值后两者的值相等)
  2. 应理解类型不匹配时的赋值原则。
  C语言中算术操作符的优先级和结合性虽然和数学上的一致但由于计算机中不同类型数据的编码格式不同,当类型不同的操作数混合運算时得出与计算机一致的结果也并非易事。
  先讨论整型间的算术运算
  表达式求值通常在运算器中进行,而运算器中专用存儲单元的长度是固定的因此,整型间运算时当操作数的编码长度“不够”长时会被自动扩充成相应的长度。需注意两点:
  1. 短变長是安全的“赋值操作”
  2. C语言中这个长度是“逻辑的”,即编译系统中int型的长度而非计算机的实际长度。int型在TC中是2个字节在VC6.0Φ是4个字节。 这也就意味着同样的代码可能可能在TC中不需扩充而直接计算但在VC6.0中则需要扩充后才能计算。当然字符型进行算术运算时被看作只有1个字节的整 型,无论如何都会被扩充的


我要回帖

更多关于 c语言求表达式的值 的文章

 

随机推荐