MINAIot  

接下来是我在学习C语言的一些笔记,特别说明我用的是gcc编译器(Linux系统下的编译器,功能特别强大),编写程序用的是vim,与之先关的vim基本操作,我已经在我的博客更新过,建议大家去看看(里面包含Ubuntu16.04的一些基本操作),我也是编程小白,但笔记都是参照技术大牛做的,希望能帮到大家!
希望大家在编程的路上越走越好!!!!!!
好啦! 废话不多说,直看知识点吧

  1. 关键字
    a. 标识符:
    在程序中,使用的变量名,函数名,标号大呢个统称为标识符。
    除库函数名由系统定义外,其他都由用户自定义

    C 语言规定:
    标识符只能是字母(AZ,az),数字(0~9)和下划线组成,
    并且第一个字符不能为数字

     	int 0a; //error
     	int a0; //OK
    

    C 语言对标识符的长度没有限制,但是标识符的长度取决与机器和编译系统
    大小写是有区别的:比如:A , a
    int a; //a,A 是两个不同的变量
    int A;
    命名应尽量有相应的意义
    //以下方式为不规范命名形式
    int a, b, c ,d ;
    int a1,a2,a3,a4 … a100;

    变量命名尽量望其名,知其意!!

    命名方法:
    驼峰命名法:
    int addNum1;
    int addNum2;
    下划线分割:
    int add_num_1;
    int add_num_2;

  2. 基本数据类型
    a. 整型
    短整型:short int(short) — 2 byte %d
    整 型:int — 4 byte %d
    长整型:long int(long) — 8 byte %ld

    有符号数:signed
    无符号数:unsigned — %u

    常 量:程序运行过程中,值不可改变的量。
    变 量:用于保存数据的计算机内存单元。运行期间,其值可以发生改变
    变量名:实际上就是一个内存地址,从变量中取值,通过变量名找到相应的内存地址
    从该存储单元中读取数据。

    变量的定义:
    DataType parametersName;
    数据类型 变量名称;

     例如:
     	int a;
     	short b;
     	long num;
     	short int tmp;
    

    变量的初始化:
    a. 第一种:先定义,后初始化
    int num;
    num = 0; //num = 45; 其初始值可以任意,一般默认初始化为 零 值

     b. 第二种:定义变量的同时初始化
     	int temp = 23;
    
     变量的初始值如何确定?
     	当确定变量必须用到,但其值不确定时,一般初始化为零值
     	确定其初始值,将其初始画为该值即可。
     	其他情况,视具体使用情况而定。
    

    未初始化的变量,其值都是随机的!

    多变量的定义及初始化:
    第一种:
    int a, b, c, d;

     	int a, b, c, d = 0;	//只有 d 的值是确定的,其他值随机
     	int a = 0, b = 1, c = 2, d = 3;	//OK
     	
     	int a, b, c, d;
     	a = b = c = d = 3;	//语法上是对的,正确的表达式
     	其等价于:从右向左赋值
     		d = 3;
     		c = d;
     		b = c;
     		a = b;
     
     第二种:
     	int a = 1;
     	int b = 2;
     	int c = 3;
     	int d = 4;
    

    思考:
    以下数据哪些是合法的?
    666
    -333
    345L //long int a = 345;
    333U //unsigned int b = 333;
    123u
    3.14
    3.1415f //float pi = 3.1415;
    以上数据均为合法数据

  3. 字符型数据 — char
    字符:由但单引号扩起来的单个符号或数字或字母,称之为字符
    如:
    ‘a’, ‘A’, ‘9’, ‘@’, ’ ', ‘,’

    字符型变量存储时,存储的是对应的 ASCII 值
    字符型数据可以和整型数据进行相互赋值,通过 ASCII 码值进行操作

    字符型变量的定义:
    DataType Name;
    占位符:%c,
    字节数:1 byte

     char ch;
     char a = '0';
     ch = 'a';
    

    putchar()/getchar()
    getchar():只能接收单个字符,输入数字也按字符处理
    当输入多个字符时,只取第一个字符:
    char ch = ‘0’;
    ch = getchar();

    putchar():输出单个字符
    putchar(ch);
    putchar(‘G’);

    转义字符:
    ‘\n’:换行符,下一行行首
    ‘\t’:制表符(tab)
    ‘\b’:回退
    ‘\r’:回车,回到当前行行首

    练习:
    使用 getchar() 获取单个字符
    使用 putchar() 输出: China 并换行!!

     #include<stdio.h>
     	int main()
     	{
     		putchar('C');
     		putchar('h');
     		putchar('i');
     		puthcar('n');
     		puthcar('a');
     		ptuchar('\n');
     		return 0;
     	}
    
  4. 输出/输入
    输出:printf()
    a. 格式化输出:printf()
    printf("格式化字符串");

     printf("Hello, World!\n");
    

    b. 参数
    printf(“格式化列表”,参数列表)

     printf("%d -- %d -- %d\n", a, b, c);	
    

    输入:scanf();
    scanf(“格式化列表”, 参数列表);

    使用:
    scanf("%d", &a);

    scanf(“a = %d”, &a);

    scanf("%d %d", &a, &b);
    &:区地址符号
    &a:表示 a 变量的地址
    %d:占位符,不同类型变量,占位符不同

    该种写法,输入数据时,两数之间可用空格,tab键或回车隔开,

    scanf() 获取数据后,会产生游离回车符,因此scanf后紧跟一个
    getchar() 用于吸收游离回车符,防止对后续输入 char 类型数据时造成影响!!!

    scanf() 的格式化列表中,不能使用 \n, 否则会造成缓冲区问题,数据无法正确获取!!

  5. 浮点型数据
    单精度:float 精确度 6 位左右 4 byte %f
    双精度:double 精确度 15 位左右 8 byte %lf

    科学计数法:
    men:
    mEn:
    m:可以是整数,也可以时小数,也可以负数,也可以是正数
    n:只能是整数

    3.14E2 = 3.14 * 10^2
    2.34e-3 = 2.34 * 10^-3

    其他占位符:
    %g:省略末尾不必要的 0
    %e:

  6. 占位符问题:
    数据类型 printf scanf()
    short/int %d %d
    long %ld %ld
    char %c %c
    float %f %f
    double %f/%lf %lf

    其他占位符号:
    %g:省略浮点型数据末尾不必要的 0
    %e:指数形式显示浮点型数据
    %u:无符号数的占位符
    %o:八进制数
    %x/%X:十六进制数
    %p: 地址

    如何区分:八进制数, 十进制数,十六进制数???
    八进制:以 0 开头的数据,(0~7)
    十六进制:以 0x 或 0X 开头的数据(09,af(A~F))

    0123
    0567
    0129 //Error
    123
    0x123
    0xfff
    0xefg //Error
    456
    345f
    4.23f
    2345L

posted on 2019-12-08 11:18  MINAIot  阅读(122)  评论(0编辑  收藏  举报