嵌入式:第二天(C语言入门)

news2024/10/7 4:24:05

目录

一、基础语法

位运算符:

& -(与运算)

| -(或运算)

^ -(异或运算)

~ -(取反运算)

<< -(左移运算符)

>> -(右移运算符)

 运算符示例代码:

运算符小案例:

运算符优先级

类型转换:

控制语句:

程序执行的三大流程:

分支语句:

if语句:

if..else语句:

if…else if…else语句:

switch语句

分支综合案例:

循环语句:

while循环语句:

do...while循环语句:

for循环语句:

死循环:

循环案例:


一、基础语法

位运算符:

常见的位运算符号有&、|、^、~、>>、<<,分别代表着如下含义:

运算符

术语

示例

结果

&

按位与运算

011 & 101

2个都为1才为1,结果为001

|

按位或运算

011 | 101

有1个为1就为1,结果为111

^

按位异或运算

011 ^ 101

不同的为1,结果为110

~

取反运算

~011

100

<<

左移运算

1010 << 1

10100

>>

右移运算

1010 >> 1

0101

 ps:取反、左右位移运算需要在补码的基础上运算。

& -(与运算)

按位与(&)运算:位与位进行比较,如果都为1,则为1,否则为0;

 // 1. 按位与运算  &
    /*
      5  二进制 101
      3  二进制 011
      -------------
                001
      按位与运算结论:两个数位置相同的都为1,则为1,否则为0;

       */
    printf("%d\n", 5 & 3); // 结果为1
| -(或运算)

按位或(|)运算:位与位进行比较,如果都为0,则为0,否则为1;

 // 2. 按位或运算  |
    /*
      5  二进制 101
      3  二进制 011
      -------------
                111
      按位或运算结论:两个数位置相同的有一个为1,则为1,否则为0;

       */
    printf("%d\n", 5 | 3); // 结果为7
^ -(异或运算)

按位异或运算:位与位进行比较,相同为0,不同为1;

  // 3. 按位异或运算  ^
  /*
5  二进制 101
3  二进制 011
-------------
          110
按位异或运算结论:两个数位置相同的数不相同,则为1,否则为0;

 */
  printf("%d\n", 5 ^ 3); // 结果为6
~ -(取反运算)

按位取反运算:补码取反,再将取反后的补码转为原码;

ps:无符号的数据,取反后最高位为1,也不需要逆运算。

 // 4. 取反运算  ~
  /*
  5  二进制 101
            010

            011

            110

  取反结论:取反,再将取反后的补码转为原码;
  注意:【使用的数据类型不一样得出的结果不一样】
  */
  printf("%d\n", ~5); // 结果为-6
<< -(左移运算符)

将数字的二进制补码全部向左移动,空出来的位置补0,超出范围的二进制数丢弃

有符号的数据左移后最高位如果为1,则需要进行逆运算;

注意事项:

  • 无符号的数据,左移后最高位为1,也不需要逆运算;
  • -128:1000 0000 特殊情况也不需要逆运算;
/**
     * 示例:
     *      40 << 4 = 0010 1000 << 4 = 1000 0000 = -128 (特殊的不需要逆运算)
     *      41 << 4 = 0010 1001 << 4 = 1001 0000 = 1000 1111 = 1111 0000 = -112
     *       7 6 5 4 3 2 1 0
     *       1 0 0 1 0 0 0 0
     */

    int8_t p = 40;
    p <<= 4;    //  p = p << 4;
    printf("40 << 4 = %d\n", p);
>> -(右移运算符)

将数字的二进制补码全部向右移动,空出来的位置补什么,取决于原来的最高位是什么。原来的最高是1就补1, 原来的最高位是0 就补0 。也可以转化成这样的一句话: 正数补0, 负数补1;

	
	/*
	  23: 0001 0111【原码】 ----  0001 0111【反码】 ----  0001 0111 【补码】
											  >> 2
	  -----------------------------------------------
										  0000 0101【补码】 --->  5
	 */
	printf(" 23 >> 2 = %d \n" , 23 >> 2) ; 
	
	
	/*
	  123: 1001 0111【原码】 ----  1110 1000【反码】----  1110 1001【补码】
											  >> 2
	  -----------------------------------------------
											1111 1010【补码】 --->  1111 1001【反码】- ----- 1000 0110 【原码】===> -6
	 */
	printf(" -23 >> 2 = %d \n" , -23 >> 2) ; 
 运算符示例代码:
#include <stdio.h>
#include <inttypes.h>

int main() {
    uint8_t a = 3;          // 0000 0011
    uint8_t b = 10;         // 0000 1010
    // 打印显示2个字符,个数不够,左边补0
    printf("%02x\n", a & b); // 0000 0010,16进制为02
    printf("%02x\n", a | b); // 0000 1011,16进制为0b
    printf("%02x\n", a ^ b); // 0000 1001,16进制为09

    uint8_t c = 10;          // 0000 1010
    uint8_t temp = ~c;       // 1111 0101
    printf("%02x\n", temp);   // 1111 0101,16进制为f5
    printf("%02x\n", c << 1); // 0001 0100,16进制为14
    printf("%02x\n", c >> 1); // 0000 0101,16进制为05

    return 0;
}
运算符小案例:
#include <stdio.h>
#include <inttypes.h>
int main()
{
    /*
    置1:
      用按位或运算(|)或者左移(<<)
      按位或运算结论:两个数有一个为1 则为1
       */

    // 1. 将变量a的第2位设置为1,其他位保持不变
    // 使用或运算,两个数有一个为1 则为1
    // 0b10110011    0xb3
    // 0b00000100    0x4
    // 0b10110111    0xb7
    uint8_t a = 0b10110011;

    printf("结果为:%#x\n", a | 0x4);
    // printf("%d\n", (1 << 2)); // 4  二进制 100  0b00000100
    printf("结果为:%#x\n", a | (1 << 2));

    // 2. 将变量b的第2位、第6位设置为1,其他位保持不变
    // 使用或运算,两个数有一个为1 则为1
    // 0b10110011    0xb3
    // 0b01000100    0x44
    // 0b11110111    0xf7
    uint8_t b = 0b10110011;
    printf("结果为:%#x\n", b | 0x44);

    // 根据这个0b01000100所知  先左移两位 再左移六位
    // printf("%d\n", (1 << 2)); // 4  二进制 100  0b00000100
    // printf("%d\n", (1 << 6)); // 64  二进制 1000000  0b01000000

    // 以上两个结合 就是0b01000100
    printf("%#x\n", b | (1 << 2 | 1 << 6));

    /*
    置0:
    按位与运算(&)或者左移取反(~<<)
    按位与运算结论:两个数位置相同的都为1,则为1,否则为0;
     */
    // 3. 将变量c的第5位设置为0,其他位保持不变
    uint8_t c = 0b10110011;
    // 0b10110011    0xb3
    // 0b11011111    0xdf
    // 0b10010011    0x93
    printf("%#x\n", c & 0b11011111);
    printf("结果为:%#x\n", c & 0xdf);
    printf("%d\n", ~(1 << 5));
    printf("%#x\n", c & ~(1 << 5));

    // 4. 将变量d的第0~3位设置为0,其他位保持不变
    /* 区间:
       就用 左移+ 按位(|)运算并取反(~) */
    uint8_t d = 0xff; // 0xff;
    // 1111 1111   // 0xff
    // 1111 0000   // 0xf0
    // 1111 0000   // 0xf0
    printf("%#x\n", d & 0xf0);
    printf("%#x\n", d & ~(1 << 0 | 1 << 1 | 1 << 2 | 1 << 3));

    // 5. 将变量e的第2位取反,其他位保持不变
    uint8_t e = 0b10110011; // 0xb3;
    // 0b10110011   0xb3
    // 0b00000100   0x4
    // 0b10110111   0xb7
    printf("%#x\n", e ^ 0b00000100);
    printf("%#x\n", e ^ 0x4);
    printf("%#x\n", e ^ (1 << 2));

    // 6. 将变量f取出8-15位
    uint32_t f = 0x12345678;
    // 变量f为十六进制 代表一个32位的二进制  1对4  4*8=32
    // 0000 0000 0000 0000 0000 0000 0000 0000    代表0x12345678
    // 0000 0000 0000 0000 1111 1111 0000 0000    代表想要取出的位数
    // 在十六进制中 1111对应f
    // 0000 0000 0000 0000 f f 0000 0000
    printf("%#x\n", (f & 0x0000ff00) >> 8);

    return 0;
}
运算符优先级
  • 不同的运算符默认具备不同的优先级,符号较多不用记,现用现查就可以。
  • 当无法确定谁的优先级高时,加一个小括号就解决了。

类型转换:

数据有不同的类型,不同类型数据之间进行混合运算时涉及到类型的转换问题。

  • 转换的方法有两种:
    • 自动转换(隐式转换):遵循一定的规则,由编译系统自动完成
    • 强制类型转换:把表达式的运算结果强制转换成所需的数据类型
      • 语法格式: (类型)变量或常量
  • 类型转换的原则:
    • 占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
#include <stdio.h>

int main()
{
    // 类型转换的原则:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。

    char a = 129;

    printf("%d\n", a);   // 隐式转换

    int b = 129;

    char c = (char)b;   // 强制转换

    printf("%d\n", c);

    return 0;
}

控制语句:

程序执行的三大流程:
  • 顺序 : 从上向下, 顺序执行代码
  • 分支 : 根据条件判断, 决定执行代码的分支
  • 循环 : 让特定代码重复的执行

分支语句:

条件语句用来根据不同的条件来执行不同的语句,C语言中常用的条件语句包括if语句和switch语句。

if语句:

语法格式:

if (条件) {
    条件成立时,要做的事
    ……
}

案例: 

#include <stdio.h>

int main() {
    //  根据条件 去执行某些代码
    int salary = 181818;
    if (salary > 100000)
    {
        printf("买保时捷");
        /* code */
    }

    return 0;
}
if..else语句:

基础语法:

语法格式:

if (条件) {
    条件成立时,要做的事
    ……
} else {
	条件不成立时,要做的事 
    ……
}

案例:

#include <stdio.h>

int main() {
    //  if 条件不成立  执行else 代码
    int salary = 888888;
    if (salary > 3000) {
        printf("买保时捷\n");
    }
    else
    {
        printf("回家睡觉\n");
    }


    return 0;
}

三元运算符:

运算符

术语

示例

结果

?:

三目运算符

a>b?a:b;

如果a>b,整体为结果a,否则整体结果为b

语法格式:

条件表达式?条件成立:条件不成立

案例:

#include <stdio.h>

int main() {
    // 通过三目运算符求2个数的最大值
    int a = 10;
    int b = 20;
    int c = a > b ? a : b;
    printf("最大值:%d\n", c);

    return 0;
}
if…else if…else语句:

语法格式:

if (条件1) {
    条件1成立时,要做的事
    ……
} else if(条件2) {
	条件2成立时,要做的事 
    ……
} else {
	条件不成立时,要做的事 
    ……
}

案例:

#include <stdio.h>

int main()
{
    // 3. 从屏幕上输入一个学生的成绩(0 - 100),对学生成绩进行评定:
    //     < 60为E
    //     60~69为D
    //     70~79为C
    //     80~89为B
    //     90以上为A
    //     < 0或>100提示成绩输入出错

    // 1. 定义变量接收学校输入的成绩
    int score;
    printf("请输入学生的成绩!\n");
    scanf("%d", &score);
    if (score < 60)
    {
        printf("E\n");
    }
    else if (score >= 90 && score <= 100)
    {
        printf("A\n");
    }
    else if (score >= 80 && score < 90)
    {
        printf("B\n");
    }
    else if (score >= 70 && score < 80)
    {
        printf("C\n");
    }

    else if (score >= 60 && score < 70)
    {
        printf("D\n");
    }
    else if (score < 0 || score > 100)
    {
        printf("成绩输入出错\n");
    }

    return 0;
}
switch语句
  • 测试一个表达式是否等于一些可能的值,并根据表达式的值执行相应的代码块,可以使用switch语言实现
  • switch可以支持数据类型:
    • int
    • 枚举类型
    • char类型
  • switch和if区别:
    • 需要根据布尔条件来执行不同的代码块,则应使用if语句
    • 需要根据表达式的值来执行不同的代码块,则应使用switch语句

语法格式:

switch (expression) {
    case value1:
        // 代码块1
        break;
    case value2:
        // 代码块2
        break;
    default:
    	// 代码块3
}
    

案例:

#include <stdio.h>

int main() {
    //    ○ 输入1:输出Monday
    //   ○ 输入2:输出Tuesday
    //   ○ 输入3:输出Wednesday
    //   ○ 输入4:输出Thursday
    //   ○ 输入5:输出Friday
    //   ○ 输入6:输出Saturday
    //   ○ 输入7:输出Sunday
    //   ○ 输入其它:输出error
    printf("请输入对应的数字1-7:");
    int num;
    scanf("%d", &num);
    switch (num)
    {
    case 1:
        printf("Monday\n");
        break;
    case 2:
        printf("Tuesday\n");
        break;
    case 3:
        printf("Wednesday\n");
        break;
    case 4:
        printf("Thursday\n");
        break;
    case 5:
        printf("Friday\n");
        break;
    case 6:
        printf("Saturday\n");
        break;
    case 7:
        printf("Sunday\n");
        break;

    default:
        break;
    }

    return 0;
}
分支综合案例:
#include <stdio.h>
// 1.定义变量保存年份、月份、天数
// 2.输入年份和月份
// 3.根据月份输出天数
// 	1、3、5、7、8、10、12月  31天
//     4、6、9、11月			30天
//     2月 	非闰年 28天  闰年 29天
// 	闰年判断:能被4整除,但不能被100整除的;或者能被400整除的年份

int main() {
    int  year, month, day;
    printf("请输入年月");
    scanf("%d %d", &year, &month);
    switch (month)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        day = 31;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        day = 30;
        break;
    case 2:
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            day = 29;
        }
        else {
            day = 28;
        }

    default:
        break;
    }
    printf("年=%d 月= %d 天数=%d\n", year, month, day);

    return 0;
}

循环语句:

  • 什么是循环
    • 重复执行代码
  • 为什么需要循环

  • 循环的实现方式
    • while
    • do...while
    • for
while循环语句:

语法格式:

while (条件) {
    循环体
    ……
}

案例:

#include <stdio.h>

int main() {
    // 需求跑步5圈
    // 1. 条件变量的定义
    int i = 1;
    // 2. while 控制重复的次数
    while (i <= 5) {
        // 3. 打印跑步第几圈
        printf("跑步第 %d 圈\n", i);
        // 4. 条件改变
        i++;
    }

    return 0;
}
do...while循环语句:

语法格式:

do {
    循环体
    ……
} while (条件);
  • do-while 循环语句是在执行循环体之后才检查 条件 表达式的值
  • 所以 do-while 语句的循环体至少执行一次,do…while也被称为直到型循环

案例:

#include <stdio.h>

int main() {
    // 需求跑步5圈
    // 1. 条件变量的定义
    int i = 1;
    do {
        // 2.1 打印跑步第几圈
        printf("跑步第 %d 圈\n", i);
        // 2.2 条件改变
        i++;
    } while ( i <= 5 ); // 3. 控制重复的次数

    return 0;
}
for循环语句:

语法格式:

for ( init; condition; increment ) {
	循环体
}
  • init会首先被执行,且只会执行一次
  • 接下来,会判断 condition,如果条件condition为真
  • 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句
  • 条件再次被判断

案例:

#include <stdio.h>

int main() {
    // 需求跑步5圈
    for (int i = 1; i <= 5; i++) {
        printf("跑步第 %d 圈\n", i);
    }

    return 0;
}
死循环:
  • 条件永远为真的循环就是死循环

示例代码:

#include <stdio.h>

int main() {
    // while (1) {
    //     printf("根本停不下来\n");
    // }

    for(;;) {
        printf("根本停不下来\n");
    }

    return 0;
}
循环案例:

1. 实现1+2+3……100所有数字的累加

案例:

#include <stdio.h>

int main() {
    // 需求:实现1+2+3……100所有数字的累加
    // 定义条件变量初始值为1
    int i = 1;
    // 定义累加变量,初始值为0
    int sum = 0;
    // 循环控制100次
    while (i <= 100) {
        // 累加
        sum += i;
        // 条件改变
        i++;
    }
    // 循环外面,打印最终的累加和
    printf("sum = %d\n", sum);

    // for循环实现
    int temp = 0;
    for (int i = 1; i <= 100; i++) {
        temp += i;
    }
    printf("temp = %d\n", temp);

    return 0;
}

2. 循环嵌套

需求如下:

通过for循环嵌套打印内容:
* * * * * 
* * * * * 
* * * * * 
* * * * * 
* * * * * 
说明:
1)每行有5个*,总共有5行
2)*之间有空格隔开
3)printf()1次只能打印1个*

代码实现:

#include <stdio.h>

int main() {
    for (int i = 0; i <= 4; i++) {
        for (int j = 0; j <= 4; j++) {
            printf("* ");
        }
        printf("\n");
    }

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1589804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis 中的动态 SQL 的相关使用方法

为什么会有动态SQL&#xff0c;把SQL写死不是比较方便吗&#xff1f;其实有很多的举例&#xff0c;这里我那一个常见的来说&#xff0c;像我们用户注册&#xff0c;会有必填字段和非必填字段&#xff0c;有些传来的参数不一样&#xff0c;那对应的SQL也不一样&#xff0c;因此&…

【ctf.show】获得百分之百的快乐

1.打开靶场 2.根据页面代码&#xff0c;get请求值只能小于4位数&#xff0c;否则会回显hack&#xff01; 尝试后确实是这样的&#xff1a; 请求值小于4位数&#xff0c;页面无变化&#xff1a; 发送请求值ls查看内容 3.根据2返回的值&#xff0c;发送值为?1>nl 创建一个nl…

每日一练(力扣)

我的思路是暴力枚举: 情况1:相同&#xff0c;就让子串和原串同时后移继续比较 情况2:不相同&#xff0c;就只让原串后移 public int strStr(String haystack, String needle) {if (haystack.length() < needle.length()){return -1;}for (int i 0; i < h…

Java | Leetcode Java题解之第15题三数之和

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> threeSum(int[] nums) {int n nums.length;Arrays.sort(nums);List<List<Integer>> ans new ArrayList<List<Integer>>();// 枚举 afor (int first 0;…

Harmony鸿蒙南向外设驱动开发-Audio

Audio驱动概述 多媒体系统是物联网设备开发中不可缺少的一部分&#xff0c;Audio作为其中重要的一个模块&#xff0c;Audio驱动模型的构建显得尤为重要。 本文主要介绍基于HDF&#xff08;Hardware Driver Foundation&#xff09;驱动框架开发的Audio驱动&#xff0c;包括Aud…

2023年蓝桥杯——日期统计

目录 题目链接&#xff1a;1.日期统计 - 蓝桥云课 (lanqiao.cn) 题目描述 思路 代码思路 定义数据结构&#xff1a; 处理每一个月&#xff1a; 检查日期序列在num100中是否存在&#xff1a; 计数匹配的日期数&#xff1a; 输出结果&#xff1a; 代码实现 总结 题目链…

面试:线程和线程池

目录 目标 一、线程有哪些状态 1、新建态&#xff08;NEW&#xff09;&#xff1a; 2、可运行态&#xff08;RUNNABLE&#xff09;&#xff1a; 3、终结态&#xff08;TERMINATED&#xff09;&#xff1a; 4、阻塞态&#xff08;BLOCKED&#xff09;&#xff1a; 5、等待态…

kafka快速入门+应用

Kafka, 构建TB级异步消息系统 1.快速入门 1.1 阻塞队列 在生产线程 和 消费线程 之间起到了 &#xff0c; 缓冲作用&#xff0c;即避免CPU 资源被浪费掉 BlockingQueue 解决 线程通信 的问题阻塞方法 put 、 take生产者、消费者 模式 生产者&#xff1a;产生数据的线程…

使用Mac自带终端进行远程ssh连接Linux服务器

废话不多说&#xff0c;直接上图 好吧&#xff0c;我承认我是多此一举&#xff0c;脱裤子放pi了&#xff0c;其实只需要在终端输入一行命令就可以了&#xff08;呜呜&#xff5e;&#xff09; ssh rootip -p 22 需要注意的是&#xff0c;命令里的ip地址同样要替换成你自己的服…

云LIS系统源码,ASP.NET区域LIS系统源码,实验室信息系统

云LIS系统源码&#xff0c;ASP.NET区域LIS系统源码&#xff0c;实验室信息系统 LIS技术架构&#xff1a;ASP.NET CORE 3.1 MVC SQLserver Redis等 开发语言&#xff1a;C# 6.0、JavaScript 前端框架&#xff1a;JQuery、EasyUI、Bootstrap 后端框架&#xff1a;MVC、S…

阿里云服务器带宽价格全解析,附报价单

阿里云服务器公网带宽怎么收费&#xff1f;北京地域服务器按固定带宽计费一个月23元/M&#xff0c;按使用流量计费0.8元/GB&#xff0c;云服务器地域不同实际带宽价格也不同&#xff0c;阿里云服务器网aliyunfuwuqi.com分享不同带宽计费模式下带宽收费价格表&#xff1a; 公网…

十五届web模拟题整理

模拟赛一期 1.动态的Tab栏 请在 style.css 文件中补全代码。 当用户向下滚动的高度没有超过标题栏&#xff08;即 .heading 元素&#xff09;的高度时&#xff0c;保持 Tab 栏在其原有的位置。当滚动高度超过标题栏的高度时&#xff0c;固定显示 Tab 栏在网页顶部。 /* TODO…

03 SQL基础 -- 查询与运算符

一、SELECT 语句基础 1.1 从表中选取数据 SELECT 语句 从表中选取数据时需要使用SELECT语句,也就是只从表中选出(SELECT)必要数据的意思。通过SELECT语句查询并选取出必要数据的过程称为匹配查询或查询(query) 基本SELECT语句包含了SELECT和FROM两个子句(clause)。示…

PointNet++函数square_distance(src, dst):计算两组点之间的欧式距离(代码详解)

文章目录 一、计算两组点之间的欧式距离二、举例三、中间结果输出 一、计算两组点之间的欧式距离 def square_distance(src, dst):"""Calculate Euclid distance between each two points.src^T * dst xn * xm yn * ym zn * zm&#xff1b;sum(src^2, dim-1…

模块化组合优势凸显钡铼IOy系列轻松应对大规模工业自动化工程

模块化组合是钡铼IOy系列独立式I/O模块的一大优势&#xff0c;它为大规模工业自动化工程提供了灵活性、可扩展性和定制性&#xff0c;从而轻松应对不同规模和复杂度的工厂应用。以下是关于模块化组合优势的详细解析&#xff1a; 1. 灵活性和定制性 模块化设计使得钡铼IOy系列…

字节Coze实现多Agent模式,文内在线体验,实时给产品经理提需求

摘要&#xff1a; 多Agent模式是一种分布式计算范式&#xff0c;它通过将复杂任务分解为多个子任务&#xff0c;并由独立的智能体&#xff08;Agents&#xff09;并行处理&#xff0c;从而提高系统的处理能力和效率。这种模式在自然语言处理、机器学习和其他数据密集型应用中尤…

未来汽车硬件安全的需求(1)

目录 1.概述 2.EVITA 2.1 EVITA HSM 2.2 EVITA保护范围 3.市场变化对车载网络安全的影响 3.1 非侵入式攻击的风险 3.2 量子计算机的蛮力攻击 3.3 整车E/E架构的变化 3.4 网络安全标准和认证 3.5 汽车工业的网络安全措施 4.汽车安全控制器 4.1 TPM2.0 4.2 安全控…

【2024最新】微信公众号怎么开启留言功能

关注微信公众号&#xff1a;怒码少年&#xff0c;回复关键词【电子书】可以免费获取计算机相关电子书 本文首发于&#xff1a;原文阅读-wx公众号&#xff1a;怒码少年 大家好&#xff0c;我是小码。 微信公众号从18年开始&#xff0c;正式关闭了留言功能。自此以后新注册的公…

华为校园公开课走入上海交大,鸿蒙成为专业核心课程

4月12日&#xff0c;华为校园公开课在中国上海交通大学成功举办&#xff0c;吸引了来自计算机等相关专业的150余名学生参加。据了解&#xff0c;由吴帆、陈贵海、过敏意、吴晨涛、刘生钟等教授在中国上海交通大学面向计算机系本科生开设的《操作系统》课程&#xff0c;是该系学…

python中time库的time.time()函数的作用是什么?

python中time库的time.time()函数的作用是什么&#xff1f; 作用&#xff1a;Python time time() 返回当前时间的时间戳&#xff08;1970纪元后经过的浮点秒数&#xff09;。 time()方法语法&#xff1a;time.time() #!/usr/bin/python # Write Python 3 code in this onlin…