C语言基础学习day1

目录

C语言的说明:

一.数据类型:

        1.1基本数据类型:

        1.2空类型:       

        1.3构造类型:                   

        1.4浮点型:

        1.5字符串

                1.5.1字符串个字符的区别:

二.常量

        2.1 概念

        2.2常量分类

三.变量 

        3.1概念     

        3.2定义

        3.3变量一些浅显的理解  

        3.4 类型转换

  四 .运算符     

   五.运算符优先级 

​编辑


C语言的说明:

1.c语言的本质是操作内存。
2.c语言在使用使需要包含头文件  
        包含头文件的方法在.c源文件的第一行写入: #include<stdio.h>
    他的意义是把stdio.h文件中的所有内容都输入在该行所在的位置,他是标准输入\输出头文件
#include<stdio.h> 
int main(){

    printf("This is a simple program");

    return 0;
}
//程序中的#include是一条预处理指令,表示编译器在编译前对源代码做出的一些准备操作
//main()是函数的入口,在一个完整的程序中main()函数有且只能有一个,并且c程序一定是从main函数
//开始执行的

一.数据类型:

        1.1基本数据类型:

基本数据类型可分为:char   short  int  long long long,其中这里面的每一种元素有分为有符号(signed)和无符号(unsigned)。C语言中默认的是有符号数。

       字符类型:char在内存中中占1个字节。

       短整型:  short在内存中占2个字节。

       整型:    intt在内存中占4个字节。 

       长整型:  long int t在内存中占4个字节(32位系统中)。

       长整型:  long int t在内存中占8个字节(64位系统中)。

       长长整型: long int t在内存中占8个字节。
例如:
    int name;  //这个是变量的声明,他的意思是定义了一个名为name的变量,类型为int(整数)
    
    name=1;  //赋值表达式,在声明变量的时候操作系统会给变量分配一块内存空间,执行name=1的
时候是将数字1存储到了这片内存空间中。
说明:剩余的char, short,long等类型的使用与int相同

        1.2空类型:       

空类型void  一般不单独使用,在实际开发过程种多用于配合指针使用。

        1.3构造类型:                   

  构造类型可分为:数组,结构体(struct),共用体(union).

        1.4浮点型:

 float 为单精度浮点型,在内存中占用4个字节。

 double为双精度浮点型,在内存中占用8个字节。

        1.5字符串

    c语言中没有专门存储字符串类型的数据类型,字符串是被存储在char类型的数组中,由于数组是
由连续的存储单元组成,所以字符串中的字符是被存储在相邻的存储单元中。字符串以 '\0'结尾

解释:
    数组:数组是同类型数据元素的有序序列.
例如:
    char name[40];//表示的是申请创建了一个可以存储40个字符的连续的一个char类型的数组。
                  //[40]表示数组中元素的数量,char表示数组中存储元素的类型。
下面以一个小例子说明:
    
#include<stdio.h>
int main(){
    char name1[32]="zhangsan";
    char name2[32]="李四";//每个汉字占四个字节
    printf("%s  %s\n",name1,name2);
    printf("%ld\n",sizeof(name1));//查看数组的长度,为32
    printf("%ld\n",sizeof(name2));//查看数组的长度,为32
    return 0;
}
    
/*
    说明:
    程序中创建了两个数组name1,name2,每一个数组在内存中都占据32个连续的储存单元由
于name1数组中只初始化了0-8各元素,下标为8的数据元素存储的值是字符串的结尾 '\0',
name下标为9-31的元素将被自动初始化为0。
    name2同理
*/
/*使用printf("%s", name1)时,name1会被解释为数组的首地址,并按照字符串的格式
输出从该地址开始的字符序列,直到遇到空字符('\0')为止。*/

                1.5.1字符串个字符的区别:

    字符'x'与字符串"x"的区别,首先字符'x'是一个char类型的字符。而"x"是一个字符串,它是
有字符'x'与'\0'组成的

二.常量

        2.1 概念

  顾名思义常量就是值不允许改变的量。常量存储在常量区中,常量区的内容不允许修改。

        2.2常量分类

    整型常量  :在函数输出结果时,整型常量又分为二进制常量,八进制常量(以%#o的形式进行输出),
    十进制常量(以%d的形式进行输出),十六进制常量(以%#x的形式进行输出)。         
    字符常量:以%c的形式输出
    浮点型常量:单精度浮点型常量float(以%f的形式进行输出)
    双精度浮点型常量double(以%lf的形式进行输出)
    字符串常量:以%s的方式进行输出
    指数常量:  以%e的方式进行输出
    标识常量  :标识常量使用宏定义的方式进行声明,在程序的预处理阶段完成替换。宏定义只是一个
简单的替换。
    标识常量定义的格式: # define 宏名 宏值

三.变量 

        3.1概念     

变量顾名思义就是它的值可以在程序运行阶段进行改变

        3.2定义

    存储类型  变量类型  变量名;
    存储类型:const static extern register volatile auto 
    由const修饰的局部变量,它的值不允许通过变量名进行修改。可以通过指针进行修改该变量的
值(意义不大),const修饰的全局变量存放在。rodata段则不允许修改。
    由static 修饰的局部变量,局部变量的生命周期会发生改变,生命周期从最近的{}结束延
长到整个.c文件,但是它的作用域未被改变。
    由extern修饰的全局变量,全局变量的作用域会发生改变。该全局变量只能在它所在的.c源
文件中有效,在其他.c源文件中不能通过  extern (以后会详细说明)关键字进行访问该变量。
    由register修饰的变量是存放在寄存器中的,该变量不能够取地址。
    由volatile修饰的变量表示能能通过访问内存的方式进行存取该变量。
    由auto修饰的变量是一个自动类型的变量,局部变量默认的存储类型时auto类型。
    非自动类型的变量:全局变量,由static修饰的变量。 

        3.3变量一些浅显的理解  

    程序在执行期间操作系统会给变量分配内存空间,如果程序出了这个变量的作用域,那么
操作系统就会回收给这个变量分配的内存空间。变量在使用时需要进行初始化。

        3.4 类型转换

    在一般情况下 类型小的强制转换成类型大的是不会出现问题的,但是大的类型强制转换成
小的是会损失精度。
    注意:强转不会改变变量自身的类型 变量的类型只和定义时有关

  四 .运算符     

    运算符主要连接的是表达式。
    运算符主要有:+ (加) ,-(减) , * (乘) ,/(除),  %(取余),++(自增),
--(自减)。
    关系运算符: >    <     >=   <=  ==    !=
    赋值运算符: =    +=     -=      *=       。 (复合赋值运算符)
    逻辑运算符: && (逻辑与) ||   (逻辑或)  !  (取非)
    逻辑运算符是连接多个表达式的,逻辑运算符的运算结果是bool类型的
    多个表达式使用&&连接时,只要有一方为假那么整个表达式的结果就是假。只有表达式的结果都
是真时,整个表达式的结果才是真。
    使用逻辑或  ||   连接表达式时,只要有一方表达式的结果为真那么整个表达式的结果就为真。
只有所有表达式的结果为假才是假。
    位运算符: & (按位与)| (按位或)    ^(异或) 
    &在这里是一个操作符  ,在运算时操作系统会把内容转换成二进制  ,然后按照全1为1  ,有0
为的操作进行运算。
  例如:  int   a=3;    int b=4;    int    c=a&b

   a          0  0  0 0 0 0 1 1

   b          0  0  0 0 0 1 0 0        进行按位与运算

    ----------------------------------

              0  0  0 0 0 0 0 0         -------->  c=0       

    同理:

     | 按位或,按位运算,有1为1,全0为0

     ^ 按位异或,按位运算,不同为1,相同为0                

   五.运算符优先级 

例题:
    执行下列程序段后,变量a,b,c的值分别是  
     int x=10,y=9;
     int a,b,c;
     a=(--x==y++)?--x:++y;
     b=x++;
     c=y;

执行步骤:
    1.操作系统先给变量x,y分配空间,然后初始化变量x,y    
    2.操作系统先给变量x,y分配空间,未初始化。
    3.这一步按照运算符优先级先执行 () 内的内容。
    4.自增,自减运算符优先级在()后。
    5.开始执行 --x 操作
    6.然后与y进行比较看结果是真还是假,比较完后y进行自增操作
    7.为真则进行--x的操作后把值赋值给a,为假则先进行++y的操作然后赋值给a;
    8.后面就不解释了
后面会优化笔记

                  

                 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值