嵌入式学习第三天!

续:2.常量和变量

  6. 字符串常量:

  如:"Hello World!" 、"ab"

  注意:字符串末尾都有一个用表示字符串结尾的\0字符。

'a' "a" 区别:

'a' : 字符常量,只有一个字符a

"a" :字符串常量,有二个字符 'a' + '\0'

举例

"ab\0"  有4个字符: 'a' 'b' '\0' '\0'

"ab\\\123ab"  有7个字符: 'a' 'b' '\\' '\123' 'a' 'b' '\0'

   7. 标识常量

   #define N 5

   宏只是代码的替换,中间不进行任何数据计算的操作

   宏名一般都是大写,用来和变量区分

    8. 变量

    数据类型 数据名

int Num1, Num2, Num3;

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

int Num = 0;

        赋值:定义变量后,对变量赋值

Num = 5;

        初始化 != 赋值

        注意:

        1. 未经初始化的变量值为随机值。

        2. 定义变量时最好对变量初始化。

3. 运算符

        1. 算数运算符:

运算符 解释 注意
+ 两个操作数相加
- 两个操作数相减
* 两个操作数相乘
/ 两个操作数相除 不能除以0
% 取模运算,也是整除后取余数 不能对浮点数操作
++ 自增运算,整数数值加1
-- 自减运算,整数数值减1

   练习:
        定义两个变量可以是整形或者浮点数类型,对这两个变量赋值,
        并计算这两个数四则运算的结果并打印在终端

嵌入式学习第三天!_第1张图片

嵌入式学习第三天!_第2张图片

        自增/自减运算符:

        i++:先用再加      i--:先用再减

        ++i:先加再用      --i:先减再用

        2. 赋值运算符

= 简单的赋值运算符,把右边操作数的值赋给左边操作数
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数
%= 求余数且赋值运算符,求两个操作数的模赋值给左边操作数,浮点数不适用取余数

        左值:允许放在赋值运算符左边的值(变量)

                注意:常量、表达式均不能作左值

        右值:允许放在赋值运算符右边的值(常量、变量、常量变量组成的表达式)

        左值为浮点数类型,右值为整型,会将值扩展精度
        左值为整数类型,右值为浮点数类型,会舍弃精度

        左右两边均为整型:将右值直接拷贝到左值空间中

        小数据放入大空间:数据扩展,有符号数高位补符号位,无符号高位补0 
        大数据放入小空间:直接截取数据低位放入小空间

        举例:

char ch = 300;
printf("ch = %d\n",ch);

结果为:44

300的二进制:0000 0000 0000 0000 0000 0001 0010 1100

char为1字节,直接截取0010 1100,转换为十进制:44

char ch = 130;
printf("ch = %d\n",ch);

结果为:-126

130的二进制:1000 0010

char为有符号字符类型,最高位为符号位,存储的是补码

反码为:1000 0001

原码为:1111 1110

所以转为十进制为:-126

        3. 三目运算符(特殊运算符)

        表达式?表达式1 :表达式2

        练习:定义三个变量,并对变量赋值,通过三目运算符获得3个数中的最大值并打印

vim test.c
gcc test.c -o test
./test

嵌入式学习第三天!_第3张图片

#include  
 
int main(void)
{
    int Num1 = 5;
    int Num2 = 9;
    int Num3 = 2;
    int MaxNum1 = 0;
    int MaxNum2 = 0;
 
    MaxNum1 = Num2 > Num1 ? Num2 : Num1;
    MaxNum2 = MaxNum1 > Num3 ? MaxNum1 : Num3;
 
    printf("%d\n",MaxNum2);

    return 0;                                                               
}

嵌入式学习第三天!_第4张图片

        结合方向:自右至左
        x > y ? x : (y > z ? y : z) 

        4. 逗运算符:

        从左到右依次执行表达式,并将最后一个逗号表达式的结果作为整体逗号表达式的结果

        5. sizeof运算符:

        sizeof (数据类型/变量名) 获得数据类型/变量在内存中所占的字节数

4. C语言中常用的输入输出函数

        1. putchar

        功能:在终端打印一个字符

        示例:

putchar('a');
        
char ch = 'A';
putchar(ch);

putchar(ch + 32);

         注意:

        1.putchar 只能打印一个字符,想打印多个字符需要多次调用putchar

        2. putchar 只能打印字符

        练习:

vim test3.c
gcc test3.c -o test3
./test3

嵌入式学习第三天!_第5张图片

#include 

int main(void)
{
    putchar('H');
    putchar('e');
    putchar('l');
    putchar('l');
    putchar('o');
    putchar(' ');
    putchar('W');
    putchar('o');
    putchar('r');
    putchar('l');
    putchar('d');
    putchar('!');
 
    return 0;
}  

嵌入式学习第三天!_第6张图片

        2. getchar

        功能:从终端接收一个字符

        注意:
        1.getchar会将程序阻塞,直到用户输入数据,程序才能继续向下执行 
        2.getchar只能接收一个字符,想要接收多个字符需要多次调用
        3.getchar只能接收字符

作业

1. 定义一个圆的半径,并赋初值,计算圆的周长和面积完成打印

嵌入式学习第三天!_第7张图片

嵌入式学习第三天!_第8张图片

2. 利用putchar和getchar实现从终端接收一个小写字母,转换成其对应的大写形式输出

嵌入式学习第三天!_第9张图片

嵌入式学习第三天!_第10张图片

3. 定义两个整形变量并对变量赋初值(初值为2位数),要求将两个数合并成一个新数并打印

        新数的千位是第二个数的十位
        新数的百位是第一个数的十位
        新数的十位是第一个数的个位
        新数的个位是第二个数的个位

        注意:利用四则运算对数字拆分和拼接
        Num1: 12
        Num2: 34
        NewNum: 3124

嵌入式学习第三天!_第11张图片

嵌入式学习第三天!_第12张图片

你可能感兴趣的:(学习)