C语言复习总结:
这个文件是在学习完C语言的基本用法后,回顾C语言的一些语法和易错,不易理解的一下内容,可能会存在内容不连续的情况.
本文内容,有参考自 M了个J的博客 根据自身的学习进行了部分的摘抄和扩写
原文请参考:http://www.cnblogs.com/mjios/tag/objective-c/default.html?page=1
算术运算:
模运算符 或称 取余运算符 %
使用这个%有个原则:%两侧必须都为整数。
负数取余
1 int a = -5 % 2;
2 int b = 5 % -2;
3 int c = -5 % -2;
利用%求出来的余数是正数还是负数,由%左边的被除数决定,被除数是正数,余数就是正数,反之则反。因此变量a、b、c的值分别是-1、1、-1
自加运算:
再来看一个比较刁钻的例子
1 int a = 10;
2
3 a = a++;
很多人一眼看上去,觉得最后a的值应该是11,其实最后a的值是10。前面已经说过a++的作用了,这里也是一样的。先将a的值拷贝出来一份,然后对a执行+1操作,于是a变成了11,但是拷贝出来的值还是10,a++运算完毕后,再将拷贝出来的值10赋值给了a,所以最后变量a的值是10
sizeof可以用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
C语言中各类运算符的优先级:
小括号() > 负号 - > ! > 算术运算符 > 关系运算符 > && > ||
位运算:
& 按位与
整数a和b各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现
可以通过与运算判断 二进制形式的某一个数的某一位是1 还是0
| 按位或
整数a和b各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1,否则为0
^ 按位异或
整数a和b各对应的二进位相异或。当对应的二进位相异(不相同)时,结果为1,否则为0
~ 取反
对整数a的各二进位进行取反(0变1,1变0)
<< 左移
把整数a的各二进位全部左移n位,高位丢弃,低位补0。左移n位其实就是乘以2的n次方。
>> 右移
把整数a的各二进位全部右移n位,保持符号位不变
if 条件语句使用注意
1、千万不要在if的小括号后面添加分号
2、像a==0这样的表达式,最好写成0==a,若你误写成0=a,编译器会直接报错的
switch语句使用注意:
1、如果某个case后面没有break,意味着执行完这个case中的语句后,会按顺序执行后面所有case和default中的语句,直到遇到break为止
2、在某些时候,我们确实没有必要在每一个case后面添加break。下面举一个例子:判断分数的优良中差等级(100分满分)。
1 int score = 77;
2
3 switch (score/10) {
4 case 10:
5 case 9:
6 printf("优秀");
7 break;
8
9 case 8:
10 printf("良好");
11 break;
12
13 case 7:
14 case 6:
15 printf("中等");
16 break;
17
18 default:
19 printf("差劲");
20 break;
21 }
3、有时候,我们可能会想在case中定义一些变量,这个时候,就必须用大括号{}括住case中的所有语句。(作用域 要明确 if语句也有此要求)
break和continue
break 跳出此次循环,只会影响它所在的那个循环。双重循环,不会影响外面的循环
continue跳过这一次循环,直接进入下一次循环,只会影响它所在的那个循环
函数:
1.任何一个函数在使用之前都必须进行定义
2、调用函数时传递的实参个数 必须和 函数的形参个数必须保持一致
3.当使用基本数据类型(char、int、float等)作为实参时,实参和形参之间只是值传递,修改形参的值并不影响到实参
4.函数可以没有形参
5.返回值就是函数调用完后,返回给函数调用者的结果,用return关键字进行返回。定义函数时,要指明函数的返回值类型
6、一个函数可以没有返回值,如果没有返回值,应该用void表示返回值类型
7、如果一个函数没有返回值,最后面的return语句可以省略
8、如果一个函数没有明确写出返回值类型,那么代表这个函数的返回值类型是int
9、return语句可以在函数内部返回一个值给函数调用者
10、一个函数内部可以多次使用return语句,使用了return语句后,函数就会马上停止执行,return语句后面的代码就不再被执行