1.表达式
1)C表达式是操作符,常量和变量的任意组合。多数表达式基本遵循代数规则
2)C编译器要做类型提升(type promotion):把所有操作数转换成尺度最大的操作数类型
.强制类型转换36000L,988U,.....
.(type)expr
2.选择语句-if语句
if(expr)/*处理*/
1)expr应该之产生scalar(int,char,或float)以及C99中的_Bool)结果
2) 尽量不要在expr中使用float表达式,因为float运算占用几条CPU指令,这将明显降低执行速度。而int或char运算符占用CPU指令数较少
3) 用?:操作符号代替if语句时,并不局限于赋值
main(){
int x,y,zmid,dec;
printf("please input three num:\n");
scanf("%d %d %d",&x,&y,&z);
if(x<y)
{
mid = x; x = y; y = mid;
}
if(x<z)
{
mid = x; x = z; z = mid;
}
if(y<z)
{
mid = y; y = z; z = mid;
}
scanf("%d",&dec);
if(dec >= 0)
{
printf("maxnum:%d",x);
}
else
{
printf("minnum:%d",z);
}
}
//结构如下
if (expr)
{
}
else if
{
}
else
{
}
3.选择语句-switch语句
switch语句:switch(expr){case...}.主要用于处理键盘输入,如接口菜单等操作
1)expr必须对int求值(可以使用int或char型)
2)与if语句的区别:switch只测试是否相等,而if可以测试关系和逻辑表达式
每个case后面的条件必须不同
switch语句中的char型常数全部被自动转换成int型
jellonwu @jintao :~/Desktop$ vim test6.c
include <stdio.h>
void main()
{
int place;
scanf("%d",&place);
switch(place)
{
case 1:printf("1111\n");
break;
case 2:printf("2222\n");
break;
case 3:printf("3333\n");
break;
case 4:printf("4444\n");
break;
default:printf("nothing\n");
break;
}
}
jellonwu @jintao :~/Desktop$ ./test6
^C
jellonwu @jintao :~/Desktop$ gcc test6.c -o test6
jellonwu @jintao :~/Desktop$ ./test6
1
1111
jellonwu @jintao :~/Desktop$ ./test6
2
2222
jellonwu @jintao :~/Desktop$ ./test6
3
3333
4.循环语句-for
1)C语言的for循环是所有面向过程的语言中的循环语句的基础
for(init;condition;inc)
{
/*dosomething*/
}
init:一般为赋值语句(初始化循环变量的作用)
condition:是一个关系表达式,指定循环退出的条件
inc:修改循环变量
for循环中,condition测试总是在循环的顶部实施(循环体可能得不到执行)
jellonwu @jintao :~/Desktop$ vim test7.c
#include <stdio.h>
void main()
{
int i = 0;
for(i = 0; i < 10; i++)
{
printf("hello:%d\n",i);
}
}
jellonwu @jintao :~/Desktop$ gcc test7.c -o test7
jellonwu @jintao :~/Desktop$ ./test7
hello:0
hello:1
hello:2
hello:3
hello:4
hello:5
hello:6
hello:7
hello:8
hello:9
注意这个例子中for中的i=0不要写成int i = 0,c89是这么规定的变量要在for外声明
2)for循环的变种:for(init1,init2;condition;inc1,inc2){...}
condition不一定包含对一些目标值测试循环变量,它可以是关系或逻辑语句(可以测试多种可能的终止条件)
void user_login()
{
char passcode[8];
int fois;
for(fois=0;fois<3&&strcmp(passcode,'123');++fois)
{
printf("please input passcode:");
gets(passcode);
}
if(fois==3) return;
}
for(expr1;expr2;expr3){.....}
for(fun1();fun2();fun3()){.....}
for循环的三个部分都可以省略
5)循环语句-while
while循环:while(condition)/*处理*/
condition可以是任何非零值的表达式
#include <stdio.h>
#define TRUE 1
#define FALSE 0
void main()
{
int traitement = TRUE;
while(tritement)
{
tritement = proc1();
if(tritement) tritement = proc2();
if(tritement) tritement = proc3();
}
}
do-while循环:在底部进行条件测试(循环体至少执行一次).
do{ /*dosomething*/}while(condition)
do-while循环常用于创建菜单子子程序
6)跳转语句
return,break;continue,goto是C的无条件条转语句,其中return和goto可以用于程序中的任何地方,break和continue可以和任何循环语句一起使用
return:无值的return常用于从void型函数返回,写成 return;
break:在switch中结束一个case;在常规循环中立即强制终止循环
continue:强制本次开始下一次
goto语句:是一种方便措施,常用于强制跳出多重循环。
exit:退出函数 void exit(int return_code); //推出整个程序