嵌入式技术一

文章介绍了Linux操作系统的基本特点,包括国产的uos和麒麟OS,以及常用命令行操作,如用户切换、文件管理等。接着深入讲解了C语言中的数据类型,如整型、浮点型、字符和字符串,包括它们的取值范围、格式控制符和转换方法。此外,还讨论了布尔类型和常量的概念。内容涵盖变量、输入输出及ASCII码的使用。
摘要由CSDN通过智能技术生成

一.Linux基础

1.linux优点(笔试重点)

1)开放性

2)免费性

3)多用户,多任务

4)良好的用户界面

5)设备独立性

6)可靠的系统安全性(普通用户切换超级用户需要密码)

2.国产操作系统

1).uos

2).麒麟os

3.常用命令

~ : 表示家目录
/ : 根目录
./ :当前目录
../: 上一级目录
双击tab键:自动补全内容,如果没有提示表示路径错误
选中内容表示复制,按滚轮表示粘贴内容
ctrl+shift+加号 : 终端界面变大
ctrl+shift+减号 : 终端界面变小
按向上的箭头,调出上一次输入过的命令。

1).终端介绍与切换用户(超级用户相当于vip,当操作权限提示不够时可切换超级用户模式)

gec:用户名;

@ubuntu:系统名;

$:用户权限(普通);

#:用户权限(超级);

切换超级用户命令:sudo -s;

返回普通用户命令:su gec;

2).基本指令

ls:列出当前目录内容

(注意:在列出根目录内容时,指令和路径之间要空格)

ls -a:列出目录信息(包括隐藏文件)

ls -l:详细列出目录或文件信息

chmod+权限代号+文件名:修改文件权限

(权限代号:r表读取权限代号为4,w表写入权限,代号为2,x表执行或切换权限,代号为1,-表不具任何权限,代号为0)

cd:进入某个目录

touch:创建文件

rm:删除文件

mkdir:创建目录

rm +文件名+'-r':删除目录(-r表递归删除)

cp:拷贝文件

cp +文件名+'-r':拷贝目录

mv:移动

pwd:显示文件绝对路径

clear:清屏

 应用练习:

  在根目录创建doc_test,将家目录里面的doc拷贝到/doc_test目录,并修改doc里面的文件main.c的权限为
用户对文件的权限为 读写执行 //421
用户组对文件的权限为写执行 //021
其它用户对文件的权限为只读 //400

3.linux下编译程序(c语言)

1)在虚拟机页面进行共享文件夹设置

2)ubutnu进入共享文件夹命令:

cd  /mut /hgfs /HF2304

3)编译命令:

gcc hf.c -o hf
./hf

 (注意: hf.c是需要编译的程序源码,hf是编译后的可执行程序,./hf是执行程序的意思 )

二.c语言数据类型

在c中我们把:

比特位(bit)作为二进制数,cpu计算单位

字节:计算机存储容量的单位

二进制数:0和1

1字节 = 8bit位

1KB = 1024字节

1M = 1024KB

1G = 1024MB

1T= 1024G

1.整型

int a = 12;

int = 4字节

1)int本意即整数的意思

2)int a代表在内存中开辟一块区域,用来存放整数,a我们叫变量

3)变量a有取值范围即为-2147483648到2147483647(int为4字节,而1字节为2^8,)

4)整型修饰符:(使用整型修饰符后,关键字int可以省略)

  • short:用来缩短整型变量的尺寸,减少取值范围并节省内存。

  • long:用来增长整型变量的尺寸,增大取值范围并占用更多的内存。

short a;//短整型
long b;//长整型
long long c;//长长整型

unsigned e;//无符号整型

unsigned short f;//无符号短整型

unsigned long g;//无符号长整型
unsigned long long h;//无符号长长整型

5)格式控制符

  • int 整型:%d

  • unsigned int 无符号整型 : %u

  • short整型:%hd,h代表half,即一半的存储字节

  • long整型:%ld

  • long long整型:%lld

  • 显示不同进制的前缀 : %#o、%#x

  • 符号位:

    • 有符号的整型数据,首位为符号位,0表示正数,1表示负数(0多1少)。

    • 无符号的整型数据,没有符号位

6)取值范围

unsigned char   0~255  //一字节,2^8 -1即256-1=255(无符号)

char  -128  ~  +127   //有符号时要带负的,左边一部分,右边一部分

图解:

7)编码形式

正数:原码和补码是一致的

负数:求补码时要用绝对值取反加一表达,且注意符号位(第一位)不变

注意事项:

  • 当遇到整型输出%d时,是用原码解读
  • %u(无符号)输出时,取值范围为0-4294967295
  • %hhu输出时,取值范围为0-255(4字节的一半的一半为1字节)
  • 负数遇到%u时要换到u的范围内计算,且负数要换成补码与u范围比较

  • 注意数值溢出

实例:(每个输出都要看懂)

其中(1)部分解释如下:

(其第二个%u时要借位)

练习:

#include <stdio.h>

int main()
{

    unsigned char a = 257;
    char b = 129;
    printf("a:%hhu\n",a);//1
    printf("b:%hhd\n",b);//-127
    printf("b:%hhu\n",b);//%u只和正数玩儿,遇到负数要看%u的范围,借位。65409
    return 0;
}

 8)进制转换

  • 十进制转二进制:除2取余数,由下到上排序。

 

  • 十进制转八进制 (%o),十进制转十六进制(%x):和上面一样,只是除数变成8或16,其它不变。

  •  二进制转八进制或十六进制或十进制

 

  •  小数转二进制

 

 2.浮点型

1)类别

  • 单精度浮点型(float),4字节
  • 双精度浮点型(double),8字节
  • 长双精度浮点型(long  double),16字节
  • 占用内存越多,可以表达的精度越多

 注意:科学计数法(float):2.0e30   即2.0*10^30

3.字符

char a = 'a';// 'a'是字符变量,代表字母a

char b = '\n'; // '\n'是不可见字符,代表回车键

重要ASCLL码
字符十进制
SPACE(空格)32
A65
a97
048

 注意:字符本质上就是一个单字节的整型,支持整型所有运算:

char a = 'a';// 存储在内存中是97
char b = '1';// 存储在内存中是49
char c1 = 20;
char c2 = c1 + 'a'; // 等价于char c2 = 20+97;

printf("%c\n",c2); // 以字符形式输出117,即 'u'
printf("%d\n",c2); // 以整型形式输出117

// 小写字符大写字符相互转换 ' ' = 32,这个十分重要,笔试会考
char a = 'b'- ' ';
printf("%c\n",a);   //B

char b = 'B'+' ';

printf("%c\n",b); //b

  • 转义字符:

 '\b' : 表示退格符
'\a': 表示告警,主板蜂鸣器
'\t': tab键

'\ddd' ddd 表示八进制数,打印出来的是该数字对应的ascii码
格式为'\'后面又三个数,每个数的范围在  0 - 7
printf("%c\n",'\102');   // 八进制

'\xhh'hh 表示十六进制 打印出来的是该数字对应的ascii码
printf("%c\n",'\x41');   //A

实例:

#include <stdio.h>

int main(int argc, char const *argv[])
{
    printf("efg\a");
    printf("abcd\b");
    printf("efg\n");

    // 转义字符---八进制'\xxx',注意x的大小为0-7
    // 注意转义字符的范围一定是127以内,不要超出char类型范围
    int a = '\102';
    printf("%o,%d,%c\n",a,a,a);
    //printf("%o\n",'\109');  // 不合法,单个字符是0-7
    
    // 转义字符---十六进制'\xhh',注意h的大小为0-F
    int b = '\x4f';
    printf("%x,%d,%c",b,b,b);
    return 0;
}

4.字符串

1)定义方式:指针和数组

char *s1 = "abcd"; // 使用字符指针来表示字符串
char s2[ ]= "abcd"; // 使用字符数组来表示字符串

 2)这里要注意任何字符串都以 '\0' 作为结束标记。(这样会多占一格内存,如字符串"abc"占用了4个位置)

5.布尔类型

1)概念:只有真与假2种组合,非0即真,0为假。

2)语法

bool a = 1; // 逻辑真,此处1可以取其他任何非零数值
bool b = 0; // 逻辑假 c

 3)在使用bool定义变量时要多加一个头文件:

#include<stdio.h>
#include<stdbllo.h>

4)这里补充一个枚举函数:enum,用法如下:

enum color{yellow=10,gree,blue,red};//若以列应用enum则从0开始计数,依次增1
printf("%d",yellow);  //10
printf("%d",red);  //13

 6.常量与变量

1)概念:不可改变的内存叫常量,可以改变的内存叫变量

2)举例

int a = 100;    // a是变量,而100是常量
float f = 3.14; // f是变量,而3.14是常量
char s[] = "abcd"; // s是变量,"abcd"是常量

 7.标准输入

1)scanf:严格定义,严格存取,该拿的拿,不该拿的不拿

2)getchar:键盘上敲击什么,就输出什么

注意:scanf() 与 printf() 不同,scanf() 的格式控制串不可乱写,尤其是结尾处的 \n,否则运行会出问题。

// 此处输入时必须带逗号
scanf("%d,%d", &a, &b);

// 此处必须先输入a=,然后才能输入整数
scanf("a=%d", &a); 

// 此处结束输入时按下的回车符将被scanf()误以为格式控制符,无法正常结束输入
scanf("%d\n", &a); 

 练习:

编程实现如下功能:

  • 如果用户输入大小写字母,则输出字母对应的ASCII码值。

  • 如果用户输入ASCII码值,则输出对应的大小写字母。

  • 输入大写写字母转为小写字母

#include <stdio.h>

int main()
{

char a;
scanf("%c",& a);
printf("%d\n",a);
int b;
scanf("%d",& b);
printf("%c\n",b);
char c, d;
scanf("%c",& c);
d = c + ' ';
peintf("%c\n",d);


return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值