循环介绍
/*shoesl.c -- 循环介绍*/#include "stdio.h"#define ADJUST 7.31 //字符常量int main(void){const double SCALE = 0.333;//变量,只读double shoe,foot;shoe = 9.0;foot = SCALE * shoe + ADJUST;printf("shoe:%10.1f;foot:%15.2f\n",shoe,foot); //一共10个字符,10.1占了3位return 0;}
基本运算符
赋值运算符: =
几个术语: 数据对象,左值,右值和运算符
int ex;int why;int zee;const int TWO = 2;why = 42;zee = why;ex = two * (why + zee);
这里ex,why和zee都是可修改的左值(或对象定位值)它们可用于赋值运算符的左侧和右侧。TWO是不可修改的左值,它只能位于赋值运算符的右侧(在该例中TWO被初始化为2这里的=运算符是初始化而不是赋值,因此并未违反规则),同时42是右值,该表达式不能表示特定内存位置。另外why和zee是可修改的左值,表达式(why+zee)是右值,该表达式不能表示特定内存位置,而且也不能给它赋值。它只是程序运算的一个零时值,在计算完成后便会被丢弃。
/*golf.c -- C的基本赋值运算符有些与众不同*/#include "stdio.h"int main(void){int jane, tarzan, cheeta;cheeta = tarzan = jane = 68; // 可以赋值三个值为同一个值printf("%4d,%8d,%8d",cheeta,tarzan,jane);return 0;}
加法运算符: +
printf("%d",4+7);
减法运算符: -
int jian = 17 - 7;
符号运算符: -和+
int fuhao1 = -12;
以这种方式使用的负号被称为一元运算符(unary operator)一员运算符只需要一个一个对象
int fuhao2 = +15;//编译器是不会报错,但是在以前,这样是不允许的。
int i1 = 32-12; //二元, 俩个运算对象int i2 = -16;//一元,一个运算对象int i3 = -(12-20); //俩者皆有,值为8;(12-20): 二元; -8:一元
乘法运算符: *
/*squares.c -- 计算1到20的平方*/#include "stdio.h"int main(void){int a = 1;while(a <= 20){printf("%4d,%6d",a,a * a);a++;}return 0;}
指数增长
/*wheat.c -- 指数增长*/#include "stdio.h"#define SQUARES 64 //棋盘中的方格数int main(void){const double CROP = 2E16; //世界小麦年产谷粒数double current , total;int count = 1;current = 2.0 * current;total = total + current;/*更新总数*/printf("count:%d current:%e, total:%e,%12.2e",count , current, total, total /CROP);}
除法运算符: /
/*divide.c -- 除法运算符*/#include "stdio.h"int main(void){printf("5/4:%d\n",5/4);printf("6/3:%d\n",6/3);printf("7/4:%d\n",7/4);printf("7./4:%1.2f\n",7./4);return 0;}
运算符优先级
运算符优先级(从高到低)
| 运算符 | 结合律 |
|---|---|
| () | 从左往右 |
| +,-(一元) | 从右往左 |
| * / | 从左往右 |
| +,-(二元) | 从左往右 |
| = | 从右往左 |
求模运算符: %
/*min_sec.c -- 求与运算符*/#include "stdio.h"int main(void){printf("%-10d\r\n", 10%5); //0printf("%-10d\r\n", 10%3); //1return 0;}
递增运算符: ++
#include "stdio.h"int main(void){int i = 0;int j = 0;while(i < 10){printf("%d,%-5d",i,++j);i++;}return 0;}
递减运算符: —
与递增运算符同理。
表达式和语句
表达式
表达式(expression)是由运算符和运算对象组成(运算对象是运算符操作的对象)。
每个表达式都有一个值
一些表达式其值
| 表达式 | 值 |
|---|---|
| -4+6 | 2 |
| c = 3 + 8 | 11 |
| 5 > 3 | 1 |
| 6 + (c = 3 + 8) | 17 |
语句
语句(statement)是C语言的基本构造块。一条语句相当于一条完整的计算机指令。在C语言中所有的语句都是以;结尾。因此只是一个表达式(它可能是一个较大表达式的一部分),而下面的代码则是一条语句:
legs = 4;
常见语句
/*addemup.c -- 集中常见的语句*/#include "stdio.h"int main(void){ /*计算前20个整数的和 ,主函数*/int count, sum; /*声明 变量*/count = 0; /*表达式语句*/sum = 0; /*表达式语句*/while(count++ < 20) /*迭代语句*/sum = sum + count;printf("sum = %d\n",sum); /*表达式语句*/return 0; /*跳转语句*/}
复合语句(块)
复合语句(compound statement) 是用花括号括起来的一条或多条语句。复合语句也成为块(block)。
类型转换&强制类型转换
/*convert.c -- 自动类型转换*/#include "stdio.h"int main(void){char ch;int i;float f1;f1 = i = ch = 'C';//自动类型转换: 字符型printf("ch=%c,i=%d,f1=%2.2f\n",ch,i,f1);ch = ch + 1;//自动类型转换: 整型printf("ch=%c\n",ch);//自动类型转换: 字符型i = f1 + 2*ch;//自动类型转换: 浮点型printf("i=%d\n",i);//自动类型转换: 整型/*强制类型转换运算符*/i = (char)((int)ch + 3);printf("i=%d,i=%c,d=%d",i,i,sizeof(i));printf("i的类型:%d",sizeof(i));return 0;}
带参数的函数&实参
/* pound.c -- 定义一个带参数的函数 */#include "stdio.h"int sum(int a,int b);int main(void){printf("%d",sum(2,3));//这里调用sum()函数,里面的2和3是是实参return 0;}int sum(int a,int b){ //这里的a和b是形参return a + b;}
