Linux&嵌入式C语言第三天

目录

Linux部分

通配符

C语言部分

 part1:C语言对于层级的概念特别强

part2:进制转换

整数转换

小数部分

part3:基本数据类型

part4:存储单元中的空间结构

part5:定义变量

标识符命名规则

拆解定义变量

 part6:常量

转义字符  \   

格式化输入输出函数

printf()//输出打印

格式控制符   

 制表符

scanf()//键盘输入


Linux部分

通配符

*——匹配一个字符串;?——匹配一个字符。

可以删除同类型文件

例:

cry@yuchen:~/d$ ls
2.txt  3.txt  cry.c  e
cry@yuchen:~/d$ rm ?.txt
cry@yuchen:~/d$ ls
cry.c  e
cry@yuchen:~/d$ touch 1.c 2.c 33.c 44.c
cry@yuchen:~/d$ ls
1.c  2.c  33.c  44.c  cry.c  e
cry@yuchen:~/d$ rm ??.c
cry@yuchen:~/d$ ls
1.c  2.c  cry.c  e
cry@yuchen:~/d$ touch 222.c 666.c
cry@yuchen:~/d$ ls
1.c  222.c  2.c  666.c  cry.c  e
cry@yuchen:~/d$ rm *.c
cry@yuchen:~/d$ ls
e

不能touch通配符 创建文件

tips:

1.Ctrl+C 结束进程

2.练习创建当日目录,留存


C语言部分

 part1:C语言对于层级的概念特别强

主函数包含了整个项目的运行逻辑,其余函数进行封装

程序架构-->主函数

part2:进制转换

整数转换

十进制-->其他进制:模n取余,将所得余数倒序

其他进制-->十进制:系数*进制数^位数,求和

二进制-->八进制:三位一组相互对应

二进制-->十六进制:四位一组相互对应

        二进制        -->        八进制

000 000 111        7            0007
000 001 000        8            0010

        二进制        -->        十六进制
0000 1111        15            0x0f
0001 0000        16            0x10

小数部分

p.s.存在有限小数在计算机里可能是无限小数-->计算机里的小数不精确--》浮点型

十进制-->二进制:小数部分*2,大于等于1,写1,减去1后重复;小于1,写0,继续。

其余进制-->十进制:同理整数部分。系数*进制数^位数,求和。

  0.1 --> 1*2^(-1)

part3:基本数据类型

  • 字符型                char         1字节 0~255  -128~127
  • 短整型                short        2字节 0~65535 
  • 整型                    int            4字节 42亿9千万
  • 长整型                long          8字节
  • 单精度浮点型    float          4字节  最多精确到小数点后6位
  • 双精度浮点型    double      8字节  最多精确到小数点后12-15位

part4:存储单元中的空间结构

  • 整数:无符号 数据位
    •     有符号    符号位+数据位
  • 小数:有符号    符号位+整数部分+小数部分

无符号 unsigned
有符号 signed
 

part5:定义变量

数据类型 标识符;

标识符:命名/标识一个东西

标识符命名规则

  1. 由数字、字母、下划线组成

  2. 区分大小写 

  3. 不能以数字开头

  4. 不能与关键字同名

拆解定义变量

定义一个字符型变量a 

    char a; // 定义一个字符型变量a
    (auto signed) char a;
    auto : CPU自动分配存储单元 
    signed : 有符号位
    char : 字符型  空间大小1字节
    a : 空间标识   方便后续操作,地址使用不方便,标识符直接代表空间

定义一个浮点型变量b

float b=5.1; // 申请一个空间,标识为b ,并存储数据5.1
        =  运算符中的赋值运算符  把右边的数据赋值给左边 

 part6:常量

数字常量:0777  0xaa  200  -1  3.14

字符常量:本质上还是数字
  ASCII码表 0~127  中的所有字符都是字符常量,共128个字符

     0        32     48    49   65   97
 空字符   空格   ‘0’   ‘1’    ‘A’  ‘a’
    ‘\0’       '  '

 ‘’  只能有一个字符

字符串常量:“” 可以是任意数量的字符
            字符串结尾默认有一个 ‘\0’
            字符串代表自身起始字符的地址[e.g.“123”这个字符串就代表这里的字符1的字符地址]
            有效长度:起始字符到第一个 ‘\0’之前的字符个数

转义字符  \   

‘\HHH’  一般默认转义3位8进制

‘\xHH’  一般默认转义2位16进制     

‘\101’  转义八进制数        
‘\x41’  转义十六进制数        

‘\\’        转义' \ '一个反斜杠

 ‘\’’        转义' ' '一个单引号

 “\””        转义' " '一个双引号

此外,讨论字符串有效长度 (注意转义字符\对有效长度的影响)      

“123” 有效长度:3

“\123” 有效长度:1        转义为一个八进制数

“\128” 有效长度:2        由于8不可看作八进制数,所以\12转义为一个八进制数,作为一个字

                                        符; 8作为第二个字符。

“abc\000abc” 有效长度:3          字符串到\0结束

                         总长度:8

“abc\x00abc” 有效长度:3        \x00被识别为十六进制数后仍为0,则再次作为\0结束该字符

                                                  串

“\xabc00abc” 有效长度:7        \xab被识别为十六进制数,作为一个字符        

\后的字符首先被当作数字,满足转义条件之后的才是字符

数据有多种表示形式

    65  0101  0x41  ‘A’   ‘\101’  ‘\x41’

格式化输入输出函数

printf()//输出打印

头文件:#include <stdio.h>

printf(“输出双引号中间的内容”);

格式控制符   

 把数据以指定格式进行获取或者输入
    %c    字符型
    %d    有符号整型  十进制
    %o    八进制
    %x    十六进制
    %f    单精度浮点型 默认精确到小数点后6位,自动四舍五入

#include <stdio.h>
int main()
{
    char a=65;
    float b=65;
    printf("65\n"); // “65”
    printf("%d\n", 65); // “65”
    printf("%o\n", 65); // “101”
    printf("%x\n", 65); // “41”
    printf("%c\n", a); // “A”
    printf("%f\n", b); // “65.000000”
//保证数据类型相同,否则无法输入
    return 0;
}
cry@yuchen:~/record/1010$ gcc char.c -o char//编译.c文件
char.c: In function ‘main’:
char.c:7:11: warning: format ‘%f’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat=]
    7 |  printf("%f\n",10);
      |          ~^    ~~
      |           |    |
      |           |    int
      |           double
      |          %d
cry@yuchen:~/record/1010$ ./char    //执行char可执行文件
10
10
12
a
0.000000//没有保证数据类型相同,所以计算机无法输出整型10为浮点型。

 制表符

    用于打印的内容排版
    \n  换行
    \t   横向制表符  TAB
    \a  响铃
    \r   回车
    \b   退格
    \v   垂直移动到下一个制表位
    \f    换页

cry@yuchen:~/record/1010$ ./char
101012a0.000000cry@yuchen:~/record/1010$ ...
//不换行就会这样,所以要用制表符

scanf()//键盘输入

输入前要先定义变量,申请存储空间

scanf(“写什么就输入什么”, &变量);

e.g.
    int a;
    int b;
    scanf(“可乐%d元%d瓶”, &a, &b);  // 就要输入 可乐1元2瓶

格式控制符 

格式控制符说明示例
%d读取十进制整数

int c;

scanf("%d", &c);

%f读取单精度浮点数

float f;

scanf("%f", &f);

%lf读取双精度浮点数

double d;

scanf("%lf", &d);

%c读取单个字符

char c;

scanf("%c", &c);

%s读取字符串(以空格或换行符为结束标志)

char str[100];

scanf("%s", str);

键盘每个按键按下都会输入一个字符
 

#include <stdio.h>
int main()
{
    int m,n;
    printf("输入两个数据:");
    scanf("%d %d\n", &m,&n);
    printf("m=%d n=%d\n",m,n);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值