经常犯得的小错误

1.bool定义时候需要加头文件 #include<stdbool.h>

2.强制类型转换的原理:只是在转换的过程中临时生成一个变量来代替原来的量,当操纵结束的时候,这个临时变量也消失。

3.
类似这样的注释,只能把while(1){}这个东西注释掉,最终程序还是会执行一次printf
预处理结果。

4.scanf("%d ",&num[i]);
%d后加了空格,就会使这个函数在回车的时候还不停止,这是因为加了空格以后,就会跳过所有空格字符,包括换行符,直到遇到其他非空格字符才停止。例子:将上述scanf加入到五次for循环中,实际中要输入6个数才会停止,但是最终获得数据也只有5个,最后一个数据没有被获取。

5.switch中的break和continue
continue一般不能用于switch,但如果switch位于循环,则可用。但此时,break只是跳出switch,会继续执行switch后的语句,而用continue则会使得程序不仅 跳出 switch语句,同时也 跳出 本次循环,不再执行switch后的语句,直接进入下轮循环。

6.C语言中单引号和双引号的区别: "a"代表的是字符串,最后还有一个'\0',而'a'则代表单个字符。

7.定义结构体类型的时候,最后大大括号要加上;  如 struct  Student{...... };

8.C中结构体定义时不能给初值 定义结构类型的时候。
struct Student stu
{
    int  a = 0;这样就是错误的应该为int a;


};
9.在printf中使用%d显示float的值不会把该float值转换为近似的int值,而是显示垃圾值。

10.数组名不能用自加自减运算符,因为它是常量。

11:++的优先级高于*,.的优先级高于*

12:空指针在是在内存中真实有的一块内存,是一个真实存在的地址,只是这块地址不能改它。而空字符是字符串中的'\0'其值为0,但是不表示任何意义,只说明字符串结束。

13: 在定义数组的时候要么给他确定长度要么对其进行初始化确定其长度

14:可以将常量或者非常量的地址赋给常量指针,但是只有非常量的地址可以赋给非常量指针

15:二维数组的声明方法: int (* pz)[2]; 而不是int * pz[2];因为这样声明的是一个有两个元素的指针数组([]的优先级高于*)

16:打开一个文件后一定要记得关掉

17:关于r+和w+的区别问题
①:‘+’仅仅代表追加功能,其中模式的运行方式还是以'+'前的为主。
②:w模式拥有在文件不存在时便创建文件的能力,但是打开原本有内容的文件时,会默认文件为空文件并开始写入。而这时候如果什么都没有写,那文件就会被当做一个空文件打开(或者进一步的保存)。
③r模式不拥有自动创建新文件的能力,也就是必须打开已存在的文件,但是它是真正能够读取文件里面内容的方式。

18.%是取余运算符,要求两边必须都是整型。






猜你喜欢

转载自www.cnblogs.com/LyndonMario/p/9326066.html