《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程序 ...
随机推荐
- MySQL主从同步原理 部署【转】
一.主从的作用:1.可以当做一种备份方式2.用来实现读写分离,缓解一个数据库的压力二.MySQL主从备份原理master 上提供binlog ,slave 通过 I/O线程从 master拿取 bin ...
- Ubuntu下VIM(GVIM)环境配置
GVIM安装( Ubuntu自带VIM ): 通过应用商店安装或者通过以下安装. sudo apt-get install vim-gnome GVIM配置: 在 家目录 ( ~/ ) 下建立 .vi ...
- 非常实用的JQuery的选项卡切换源码
<html> <head> <meta charset="utf-8"> <title>简单选项卡</title> &l ...
- demo_06Canvas
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- CSS 常用命名
在前端开发中,规范使用 DIV+CSS 命名,可以增强团队合作提高开发效率,有利于页面后期的维护和优化. 1.页面结构 wrap:外套.包裹,用于最外层. wrapper:外套,用于页面外围控制整体布 ...
- 规则引擎-BRMS在企业开发中的应用
1. 什么是规则复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(business logic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其 ...
- 求和函数 sum详解
sum()的参数是一个list: >>> sum([1,2,3]) 6 >>> sum(range(1,3)) 3 还有一个比较有意思的用法 a = range(1 ...
- 计划任务实现定时备份mysql数据库
1.linux平台 30 3 * * * sh /data/tools/mysqlbackup.sh 每天3点半备份数据库mysqlbackup.sh(备份最近5天的数据): #设置数据库名,数据库 ...
- PERL高效代码摘录 - 数组
1. 2个数组找不同 ,,,,,,); ,); %seen=(); foreach(@a_hast_g){ ; } @unique=grep($seen{$_},@a_cl_g); } map { $ ...
- Windows API 常量定义
Windows 常量定义在winuser.h中可以找到,如果了安装了visual studio 2010,winuser.h所在目录为C:\Program Files (x86)\Microsoft ...