嵌入式工程师day3(C语言基础2)

本文详细介绍了C语言中的常量与变量概念,包括字符串常量、标识常量、变量及其初始化和赋值。此外,还涵盖了类型转换、算术运算符、赋值运算符、三目运算符、逗号运算符和sizeof运算符,以及常用的输入输出函数如getchar(),putchar(),printf(),scanf(),puts(),和gets()的功能和注意事项。
摘要由CSDN通过智能技术生成

一.常量与变量

      1.字符串常量:字符串末尾都有一个用来表示结尾的的“\0"字符

          “ab”

          "hello world"

          ‘a’与”a”的区别:

               ‘a’:字符常量,只有一个字符a

               “a”:字符串常量,有俩个字符‘a’+‘\0‘

        例:“ab\0”有四个字符

               “ab\\\123ab"有七个字符

     2.标识常量

         #define M 5

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

         宏名一般都是大写,用来和变量进行区分,但也可以小写,但一般不推荐

    3.变量:

       数据类型 变量名:

       int Num1,Num2,Num3;

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

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

       初始化!=赋值

       注意:1.未经初始化的变量值为随机值

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

二.类型转换:

       1.显示类型转换(强制类型转换,但只会转换一次)

          例如:(int)3.14+3.14=6.14

       2.隐式类型转换:

          低精度转换高精度:

               浮点型精度 > 整形精度
               同种类型所占内存空间越大精度范围越高
               无符号精度 > 有符号精度

               float类型进行数据运算和数据处理时会转换为double类型
               short、char类型进行数据运算和数据处理时会转换为int类型

               char + char == int 
               char + short == int 
               float + float == double 
               float + double == double 
               float + int == double 

三.运算符:

      1.算术运算符:+   -   *   /  %  ++   --(其中/不能除以0;%不能对浮点数操作)

      2.赋值运算符:=     +=     -=    *=    /=    %=(表示运算结果后结果对变量进行一次对应操作)

       例如:int a = 2

                  a -= 5 -1

                  a = a - (5 - 1)

        左值:允许放在赋值运算符左边的值
              变量  
              常量、表达式均不能作为左值

        右值:允许放在赋值运算符右边的值
              常量、变量、常量变量组成的表达式
        
        左值为浮点数类型,右值为整形,会将值扩展精度
        左值为整数类型,右值为浮点数类型,会舍弃精度

        左右两边均为整形:将右值直接拷贝到左值空间中
        
        小数据放入大空间:数据扩展,有符号数高位补符号位,无符号高位补0 
        大数据放入小空间:直接截取数据低位放入小空间

        例题:

        char ch = 300;
        printf("ch = %d\n", ch);    结果为44  

        计算过程:    char为一字节0000 0000

               300对应二进制    0001 0010 1100   原码

                                      对应8位 0010 1100   对应结果为44            

         char ch = 130;
         printf("ch = %d\n", ch);    结果为-126 

         计算过程:     char为一字节0000 0000

                        130对应二进制    1 000 0010   原码(char内存范围-128 -- 127)

                           (符号位)   -> 1 111 1101    反码

                                                    1 111 1110    补码    对应结果(-126)

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

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

       4.逗号运算符

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

       5.sizeof运算符

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

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

       1.getchar putchar 
       2.scanf printf 
       3.gets puts 

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

                                                  

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

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

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

      printf的功能:

      1.打印非输出控制符:

        \n  换行符
        \t  横向制表符
        \v  纵向制表符
        \b  退格符
        \r  回车符
        \\  \字符 
        \"  "字符 

     2.打印单个输出控制符:

        int Num = 0;
        double f = 3.14;
        printf("Num = %d\n", Num);

        %d              按照十进制打印
        %o              按照八进制打印 
        %x              按照十六进制打印
        %c              按照字符打印
        %f              按照浮点数类型打印
        %s              按照字符串打印
        %p              按照指针类型打印 
        %u              按照无符号类型打印 
        %e              按照科学计数法打印浮点数类型
        %%              打印%号 

        int %d 
        unsigned %u 
        char %c 
        float double %f

    3.打印多个输出控制符

        int Num1 = 100;
        int Num2 = 200;

        printf("Num2 = %d, Num1 = %d\n", Num2, Num1);

        注意:
            输出控制符的个数必须与后面的表达式个数一一匹配

     4.printf格式化打印

         %nd     n:域宽,数据不足域宽,高位用空格补齐
        %0nd    0:数据不足域宽,高位用0补齐
        %-nd     -:左对齐
        %.mf     m:保留小数点后m位有效数字

     scanf 的功能:

     1.接收非输入控制符

        scanf("m");

        非输入控制符需要原封不动的从终端输入

     2.接收输入控制符

        %d          按照有符号十进制接收数据
        %c          按照字符接收数据
        _%c        接收一个' '和'\n'的字符
        %f           按照float接收数据
        %lf          按照double接收数据
        %s          按照字符串接收数据 

      3.接收多个输入控制符:

        int Num1 = 0;
        int Num2 = 0;
        float f = 0;

        scanf("%d %d", &Num1, &Num2);
        scanf("%d %f", &Num2, &f);


    注意:
        1.scanf如果输入数据与想要接收的数据不匹配,从不匹配的位置开始不再向后读取
        2.scanf除了%s形式外,都需要加 &
        3.scanf除了%c形式外,均无法接收' '和'\n'字符 
        4.scanf中_%c可以接收非' '和'\n'字符 
        5.scanf中严禁\n

   puts的功能:在终端打印一行字符串

    注意:
          puts会在字符串末尾多打印一个\n字符

   gets的功能:从终端接收一行字符串

注意:
        1.gets会去掉从终端接收的\n字符
        2.gets可以接收带' '的字符串,scanf无法接收带' '的字符串 
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值