C Primer Plus学习 六 基本运算符

来源:互联网 发布:java nanotime 单位 编辑:程序博客网 时间:2024/06/06 03:26

C使用运算符(operator)来代表算术运算,现在我们看一下用于基本算术运算的运算符: =、+、-、*,以及/ (C没有指数运算符。)。

赋值运算符:=

在C里,符号=不表示“相等”,而是一个赋值运算符。下面的语句将值2002赋给名字为bmw的变量:bmw = 2002;,符号=的左边是一个变量名,右边是赋给该变量的值。

/* golf, c --高尔夫锦标赛记分卡*/
#include <stdi〇.h> int main (void)
{

int jane, tarzan, cheeta:

cheeta = tarzan = jane = 68;

printf (" cheeta tarzan jane\n*):

printf ("First round score %4d %8d %8d\n", cheeta. tarzan, jane);

return 0;

}

许多程序语言将在本程序里的三重陚值处卡壳,但是c可以顺利接受它。陚值是从右到左进行的。首 先jane得到值68,然后tarzan得到值68,最后cheeta得到值68。

加法运算符:+
“加法运算符”(addition operator)使得在它两侧的值被加到一起。

例如,语句:
printf ("% d", 4 + 20);
将打印数24而不是打印表达式:
4 + 20
被加的值(操作数)可以是变童也可以是常量。所以语句:
income = salary + bribes;
使计算机先査找右边的两个变釐的值,将它们加起来,最后将这个和賦给变量income。

减法运算符:-
“减法运算符”(subtraction operator)从它前面的数中减去它后面的数。

例如,下面的语句将值200.0 陚给 takehome:
takehome = 224.00 - 24.00;
+和-运算符被称为二元(binary)或双值(dyadic)运算符,这表示它们需要两个操作数。

乘法运算符:*

乘法由符号*表示。语句:
cm = 2.54 * inch:
用2.54乘以变量inch,然后将结果陚给cm。

除法运算符:/
C使用符号/来表示除法。/左边的值被它右边的值除。例如,下面的语句把值4.0赋给four:
four = 12.0/ 3.0:
整型数的除法运算和浮点型数的除法运算有很大的不同。浮点类型的除法运算得出--个浮点数结果, 而整数除法运算则产生一个整数结果。整数不能有小数部分,这使得用3去除5很让人头痛,因为结果有 小数部分。在C中,整数除法结果的小数部分都被丢弃。这个过程被称为截尾(truncation)。

运算符的优先级
考虑下面的代码行:
butter = 25.0 + 60.0 * n / SCALE:

执行各种操作的顺序很重要,所以C需要关于执行顺序的明确规则。C通过建立-个运算符的 优先顺序来满足上述需求。将一个优先级赋予每个运算符。像在普通的算术运算中那样,乘法和除法具 有比加法和减法更高的优先级,所以先执行乘法和除法运算。如果两个运算符有相同的优先级将会发屮什 么?如果它们共享--个操作数,会根据它们在语句里出现的顺序执行它们。对于大多数的运算符,该顺序 是从左到右的(=运算符是这个规则的例外)。

如何让加法在除法之前执行?您可以像下面这样:
flour = (25.0 + 60.0 * n) / SCALE:
最先被执行的是圆括号中包含的部分。在圆括号内部,运算按正常的规则进行。在本例中,先执行乘 法运算,然后是加法。圆括号内的表达式就是如此完成的。现在可以用SCALE去除这个结果了。


/* sh〇es2.c --计算多个鞋尺码对应的英寸长度T*/
#include <stdio.h>
#define ADJRST      7.64
#define SCALE       0.325


#define SQUSRES     64             /*棋盘上的方格数*/
#define CROP        1E15           /*以粒计的美国小麦产量*/


#define SEC_PER_MIN 60              // 每分钟的秒数


int main(void)
{


double shoe,foot;


double current,total;
int    count=1;


int sec, min ,left;


printf("Shoe size (men's) foot length\n");
shoe=3.0;
while (shoe<18.5)/* whiie 循环汗始 */
{                  /*代码块幵始 */
foot=SCALE*shoe+ADJRST;
printf("%10.1f %15.2f inches\n",shoe,foot);
shoe=shoe+1.0;


}                /* ”代码块结束 */
printf ("If the shoe fits, wear it.\n");


printf ("...............................\n");
/* wheat, c --指数增长 */
printf ("square grains total ");
printf ("fraction of \n");
printf (" added         grain ");
printf ("US total\n");


total=current=1.0;             /* 开始时是 1 粒 */
printf("%4d %13.2e %12.2e %12.2e\n",count,current,total,total/CROP);
while (count<SQUSRES)
{
count=count+1;
current=2.0*current; /* 下个方格的粒数加倍*/
total=total+current;/*新总数 */
printf("%4d %13.2e %12.2e %12.2e\n",count,current,total,total/CROP);


}
printf("that'all\n");
printf ("...............................\n");
// min_sec.c =把而换为分钟和秒
printf ("Convert seconds to minutes and seconds!\n");
printf ("Enter the number of seconds (<=0 to quit) : 读入秒数\n");
scanf ("%d", &sec); // 读入秒数
while(sec>0)
{
min=sec/SEC_PER_MIN;//截得到的分钟
left=sec%SEC_PER_MIN;//截得到的秒数
printf ( "%d seconds is %d minuter. %d seconds. \n",sec,min,left );
printf (" Enter next value (<=0 to quit) :\n");
scanf ("%d", &sec); // 读入秒数
}
printf("done!");




return 0;




}










0 0
原创粉丝点击