eft over
// Calculate how many cookies each child gets when they are divided up
cookies_per_child = cookies/children; //Number of cookies per child
printf(You have %d children and %d cookies , children,cookies);
printf(Give each child %d cookies. ,cookies_per_child);
// Calculate how many cookies are left over
cookies_left_over = cookies%children;
printf(There are %d cookies left over. , cookies_left_over);
return 0;
}
执行程序后的输出:
You have 7 children and 45 cookies
Give each child 6cookies.
There are 3 cookiesleft over.
代码的说明
下面一步一步地解释这个程序。下面的语句声明并初始化4个整数变量:cookies、children、cookies_per_child、cookies_left_over:
int cookies = 45; // Number of cookies in the jar
int children = 7; // Number of children
int cookies_per_child= 0; //Number of cookies per child
int cookies_left_over = 0; //Number of cookies left over
使用除号运算符“/”将饼干数量除以孩子的数量,得到每个孩子分得的饼干数:
cookies_per_child= cookies/children; //Number of cookies per child
下面两个语句输出结果,即cookies/children变量的值:
printf(You have %d children and %dcookies , children, cookies);
printf(Give each child %dcookies. , cookies_per_child);
从输出结果可以看出,cookies_per_child的值是6。这是因为当操作数是整数时,除法运算符总是得到整数值。45除以7的结果是6,余3。下面的语句用取模运算符计算余数:
cookies_left_over= cookies%children;
赋值运算符右边的表达式计算cookies除以children得到的余数。最后一个语句输出余数:
printf(Thereare %d cookies left over. , cookies_left_over);
2. 深入了解整数除法
当一个操作数是负数时,使用除法和模数运算符的结果是什么?在执行除法运算时,如果操作数不同号,结果就是负数。因此,表达式-45/7和45/-7的结果相同,都是-6。如果操作数同号,都是正数或都是负数,结果就是正数。因此45/7和-45/-7结果都是6。至于模数运算符,不管操作数是否同号,其结果总是和左操作数的符号相同。因此45%-7等于3,-45/7等于-3,-45/-7也等于-3。
3. 一元运算符
例如,乘法运算符是一个二元运算符。因为它有两个操作数,其结果是一个操作数乘以另一个操作数。还有一些运算符是一元运算符,即它们只需一个操作数。后面将介绍更多的例子。但现在看看一个最常用的一元运算符。
4. 一元减号运算符
前面使用的运算符都是二元运算符,因为它们都操作两个数据项。C语言中也有操作一个数据项的一元运算符。一元减号运算符就是一个例子。若操作数为负,它就生成正的结果,若操作数为正,它就生成负的结果。要了解一元减号运算符的使用场合,考虑一下追踪银行账号。假定我们在银行存了200元。在簿子里用两列记录这笔钱的收支情况,一列记录付出的费用,另一列记录得到的收入,支出列是负数,收入列是正数。
我们决定购买一片价值50元的CD和一本价值25元的书。假使一切顺利,从银行的初始值中减掉支出的75元后,就得到了余额。表2-2说明这些项的记录情况。
表2-2 收入与支出记录
| 项 |
收 入 |
支 出 |
存 款 余 额 |
| 支票收入 |
$200 |
|
$200 |
| CD |
|
$50 |
$150 |
| 书 |
|
$25 |
$125 |
| 结余 |
$200 |
$75 |
$125 |
如果将这些数字存储到变量中,可以将收入及支出都输入为正数,只有计算余额时,才会把这些数字变成负数。为此,可以将一个负号(-)放在变量名的前面。
要把总支出输出为负数,可编写如下语句:
int expenditure = 75;
printf(Your balance has changedby %d., -expenditure);
这会产生如下结果:
Yourbalance has changed by -75.
负号表示花掉了这笔钱,而不是赚了。注意,表达式-expenditure不会改变expenditure变量的值,它仍然是75。这个表达式的值是-75。
在表达式-expenditure中,一元减号运算符指定了一个动作,其结果是翻转expenditure变量的符号:将负数变成正数,将正数变成负数。这和编写一个负数(如-75或-1.25)时使用的负号运算符是不同的。此时,负号不表示一个动作,程序执行时,不需要执行指令。它只是告诉编译器,在程序里创建一个负的常量。