《C语言程序设计现代方法》第4章 表达式
C语言的一个特点就是它更多地强调表达式而不是语句,表达式是表示如何计算值的公式。
当表达式包含两个或更多个相同优先级的运算符时,运算符的结合性(associativity)开始发挥作用。如果运算符是从左向右结合的,称这种运算符是左结合的(left associative);如果运算符是从右向左结合的,那么称这种运算符是右结合的(right associative)。
程序:计算通用产品代码的校验位
美国和加拿大的货物生产商都会在超市销售的每件商品上放置一个条形码,称为通用产品代码(Universal Product Code,UPC),用于设别生产商和产品。该代码由四组数字组成,比如:
0 13800 15173 5
第一组数字共1位,用于表示商品的种类;第二组数字占用5位,用来标识生产商;第三组数字占用5位,用来标识产品(包括包装和尺寸);最后1位数字是“校验位”,它唯一的目的就是用来识别前面的数字是否出错。
下面是计算校验位的一种方法:首先把第1、3、5、7、9、11位数字相加,设和为sum1;接着将第2、4、6、8、10位数字相加,设和为sum2;接着把第一次加法的结果乘以3,再和第二次加法的结果相加;随后再把上述结果减1;相减后的结果除以10取余数;最后用9减去上一步骤中得到的余数。
/* upc.c */
/* Computes a Universal Product Code check digit */
int main()
{
int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5;
int first_sum, second_sum, total; printf("Enter the first (single) digit: ");
scanf("%1d", &d);
printf("Enter the first group of five digits: ");
scanf("%1d%1d%1d%1d%1d", &i1, &i2, &i3, &i4, &i5);
printf("Enter the seconf group of five digits: ");
scanf("%1d%1d%1d%1d%1d", &j1, &j2, &j3, &j4, &j5); first_sum = d + i2 + i4 + j1 + j3 + j5;
second_sum = i1 + i3 + i5 + j2 + j4;
total = first_sum * + second_sum;
printf("Check digit: %d\n", - ((total - ) % )); return ;
}
运行结果如下:

在许多编程语言中,赋值是语句;然而,在C语言中赋值就像+那样是运算符。换句话说,赋值操作产生结果,就如同两个数相加产生结果一样。
大多数C语言运算符允许它们的操作数是变量、常量或者包含其他运算符的表达式,然而,赋值运算符要求它的左操作数必须是左值(lvalue)。左值表示存储在计算机内存中的对象,而不是常量或计算的结果。
小结:所有的11种赋值运算符,包括简单赋值和复合赋值,其优先级(优先级仅仅高于逗号运算符)和结合性(均右结合性)都相同。
C语言有一条不同寻常的规则,那就是任何表达式都可以用作语句(表达式语句)。
《C语言程序设计现代方法》第4章 表达式的更多相关文章
- C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载
下载地址:点我 C语言仍然是计算机领域的通用语言之一,但现在的C语言已经和当初的时候大不相同了.本书主要的一个目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化 ...
- C语言程序设计-现代方法(笔记1)
第一章 C语言概述 1.C语言的历史(1.1) 起源:贝尔实验室开发的UNIX操作系统的副产品.标准化:C89和C99.基于C的语言:C++,Java,C#,Perl. 2.C语言的优缺点(1.2) ...
- Java语言程序设计(基础篇) 第六章 方法
第六章 方法 6.2 定义方法 1.方法的定义由方法名称.参数.返回值类型以及方法体组成. 2.定义在方法头中的变量称为形式参数(formal parameter)或者简称为形参(parameter) ...
- C语言程序设计现代方法_基本类型(第七章)
C语言支持两种不同的数值类型,整数类型,浮点类型. C语言的整数类型有不同的尺寸.int类型通常为32位,但在老的CPU上可能是16位.有些可能是64位. 因此,int型如果在16位CPU上最大值就是 ...
- 《C语言程序设计现代方法》第3章 格式化输入/输出
完整的细节将留到第22章中介绍. 调用printf函数一次可以打印的值的个数没有限制. 注意:C语言编译器不会检查格式串中转换说明的数量是否和输出项的数量相互匹配,也不会检查转换说明是否适合要显示项的 ...
- C语言程序设计现代方法1,2,3章
1:浮点型(float)运算比int慢,并且可能存在舍入误差 如float存储0.1,以后使用可能会变成0.099999999987 2:宏定义只用大写,这是大多数C程序猿遵循的规范! C语言区分大小 ...
- 《C语言程序设计现代方法》第4章 编程题
1 编写一个程序,要求用户输入一个两位数,然后按数位的逆序打印出这个数. 方法一:没技术含量的 #include <stdio.h> int main() { int high, low; ...
- 《C语言程序设计现代方法》第2章 C语言基本概念
C语言的基本概念 第一个C程序例子. /* pun.c */ #include <stdio.h> int main(void) { printf("To C, or not t ...
- 《C语言程序设计现代方法》第1章 C语言概述
C语言的特点:C语言是一种底层语言.C语言是一种小型语言.C语言是一种包容性语言. C语言的优点:高效.可移植.功能强大.灵活.标准库.与UNIX系统集成. C语言的缺点:C程序更容易隐藏错误.C程序 ...
随机推荐
- 学习笔记---C++伪函数(函数对象)
C++里面的伪函数(函数对象)其实就是一个类重载了()运算符,这样类的对象在使用()操作符时,看起来就像一个函数调用一样,这就叫做伪函数. class Hello{ public: void oper ...
- js之封装sort实现json格式数据的排序
eg : data:{[ {"name":"paul","ege":12}, {"name":"paul&q ...
- 动态改变EasyUI grid 列宽和隐藏列
隐藏显示 $('#yourGrid').datagrid('hideColumn','yourColumn'); $('#yourGrid').datagrid('hideColumn','yourC ...
- html5生成柱状图(条形图)
<html> <canvas id="a_canvas" width="1000" height="700">< ...
- SQL Server 扩展事件(Extented Events)从入门到进阶(1)——从SQL Trace到Extented Events
由于工作需要,决定深入研究SQL Server的扩展事件(Extended Events/xEvents),经过资料搜索,发现国外大牛的系列文章,作为“学习”阶段,我先翻译这系列文章,后续在工作中的心 ...
- Spring Cloud Eureka Server 启停状态监控
目前发现如下的api: 当时没有找到文档 http://localhost:8761/eureka/apps 参考文章:(此文中api带有v2我自己试验不需要v2) http://blog.csdn. ...
- 定时生成bat命令
windows下,定时生成bat的名. at 14:54 cmd /c "echo net share D=d:\ > d:d.bat" ^对>转义.
- Soy文件生成JS文件 - 一个使用Google soy模板的例子
1.下载工具包,后解压. http://closure-templates.googlecode.com/files/closure-templates-for-javascript-latest.z ...
- poj 3185 The Water Bowls
The Water Bowls 题意:给定20个01串(最终的状态),每个点变化时会影响左右点,问最终是20个0所需最少操作数? 水题..直接修改增广矩阵即可:看来最优解不是用高斯消元(若是有Gaus ...
- asp.net资料! (.NET) (ASP.NET)
使用SqlBulkCopy类加载其他源数据到SQL表 在数据回发时,维护ASP.NET Tree控件的位置 vagerent的vs2005网站开发技巧 ASP.NET2.0小技巧--内部控件权限的实现 ...