嵌入式学习心得Day2 -- C语言基础(变量 运算符 进制 输入输出)

这篇博客详细介绍了嵌入式编程中的变量定义,包括存储类型和数据类型,如int、char、float等,并探讨了运算符的使用,如算术运算符、关系运算符、逻辑运算符等。还涵盖了位运算符的讲解及进制转换,以及函数和输入输出函数的基本应用。此外,博主分享了在学习过程中遇到的问题和解决心得。
摘要由CSDN通过智能技术生成

嵌入式入门学习笔记,遇到的问题以及心得体会!

Day 2

笔记:
1.变量
格式:存储类型 数据类型 变量名

存储类型:
    auto:默认使用
    extern:声明其他文件当中定义的变量
    static:声明静态变量
    register:声明寄存器变量

数据类型:
    基本长度:1byte
    最小长度:1bit
    抓换:1byte = 8bit
    整形系列:
        int:4字节,32bit 2^32 -1     最高位(符号位):为0是正数;为一是负数
            signed int:-(2^31 - 1) ~ (2^31 -1)
            unsigned int:0 ~ 2^32 -1
        short:2字节
            signed short:-(2^15-1) ~(2^15-1)
            unsigned short:0 ~ 2^16-1
        long:4字节

        long long:8字节
    浮点型系列:有小数;数值不确定上下浮动;
        float:4字节

        double:8字节
    字符型:
        char:1字节   :‘a’ '1'  '?'
        '1' = 49        'a' = 65

    构造数据类型:指针  数组

    空类型:void
        注:只可以定义函数 参数和指针

定义变量时注意的问题:    
    变量名:    1.变量名不能为关键字
        2.变量名不能以数字开头
       eg:
        int chengji1;
        int chengji2;

        char xingming = 'qu'--->error:内存溢出
        char xingming[] = {'q','u'};


        变量的初始化:定义时给变量赋值

        int i = 5;注:'='表示赋值符,若要判断是否等于要用'=='

2.运算符
    算数运算符:+ - * / % ++ --

    int i = 10;
    //i++;//11
    //++i;//11

    ++在前直接自加,++在后遇分号自加;

    隐式类型转换:
        unsigned char--->signed char
        int <------- unsigned int
        字节长度小转字节长度大
    
    强制类型转换:float i = 3.14;
        (int)i;实现强制类型转换




    关系运算符:> < >= <= !=
    逻辑运算符:&&  ||  !
        &&:前后表达式都为真时为1;有一个为假就为0;若第一个为假,则不执行表达式   
        表达式2;
        ||:前后表达式有一个为真则为1;只要表达式1为真,则不执行表达式2;
    

    赋值运算符:= += -=
        int i = 10;
        i + = 5;
        //这两句的含义相当于 i = i+5;
    
    条件运算符(三目运算符):表达式1 ?表达式2 : 表达式3
        表达式1为真,则执行表达式2,为假则执行表达式3;

    sizeof运算符:求长度

        sizeof(数据类型或变量);
        注:sizeof只是一个运算符而非函数;
#include<stdio.h>


int main()
{
	int a = 10;

	printf("%d\n",sizeof a);
	printf("%d\n",sizeof(int));



	return 0;
}

    位运算符:<< >> & | ~ ^
        十进制转二进制:使用短除法将数字余数连起来即是二进制数

        int i = 3;-->11  000011
        int j = i <<3; -->011000 = 2^4 +2^3 =24

        注意:不可移出位数
        二进制转十进制:哪一位有1就时2^(n-1),后将所有有1的位的数值相加

        &:对应位都为1,则为1;有一个为0,则为0;
            int i = 3;        011
            int j = 5;        101
            int k = i & j;    001

        |:对应位有一个为1则为1;俩个都为0则为0;
            int i = 3;        011
            int j = 5;        101
            int k = i | j;    111
            
        
        ~:将0变1,1变0

        ^:对应位相同为0,不同为1
            int i = 3;        011
            int j = 5;        101
            int k = i ^ j;    110
#include<stdio.h>


int main()
{
	int i = 3;
	int j = 5;

	//int k = i & j;
	//int k = i | j;
	int k = i ^ j;
	
	
	printf("%d\n",k);



	return 0;
}

        练习:
        int i = 10;        000001010
        int j = i <<5;    101000000 -->320
        int k = i ^ j;    101001010 -->330

    进制转换:
    二进制:0 1            1101  0000   0000
    八进制:0~7            15
    十进制:0~9            13
    十六进制:0~9 +a~f        d

    二转八:先转十,再转八,三位代表一位
    二转十:。。。。
    二转十六:四位代表一位
        十进制    二进制    八进制    十六进制
    int i      2    010    02    0x2
        16    010000    020    0x10
        6    0110    06    0x6

函数(具有各种功能的代码)

自己编写的函数
库函数:系统自带的函数
    调用库函数的要求:声明函数头文件
        #include<stdio.h>
        #include<string.h>
标准输入函数和标准输出函数:
    标准输出函数:printf
    格式:printf(“需要输出的内容和系统指令(%d)”,表达式);
        字符串---》%s
        单个字符---》%c
        整型---》%d
        浮点型---》%f
        指针(地址)---》%p


    标准输入函数:scanf
    格式:scanf("系统指令",&变量名)
        为什么要用&:需要通过地址的形式来进行赋值
#include<stdio.h>

int main()
{
	int i = 10;
	char y = 'a';
	float k = 3.14;

	scanf("%d\n%c",&i,&y);


	printf("i = %d,y = %c,k = %.2f\n",i,y,k); 






	return 0;
}
    练习:使用scanf和printf实现下面的功能

    在终端打印
    please input your age:

    please input your high:

    your age and high are:     ,    cm
#include<stdio.h>

int main()
{
	int i;
	float j;

	printf("please input your age:\n");
	scanf("%d",&i);
	printf("please input your high:\n");
	scanf("%f",&j);
	printf("your age and high are:%d,%.1fcm\n",i,j);
	



	return 0;
}

```![这是在虚拟机上编写的代码](https://img-blog.csdnimg.cn/20210223194443407.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NwcmluZ1dKTg==,size_16,color_FFFFFF,t_70#pic_center)


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值