C语言基础(一)

目录

C语言基础学习(一)

一、常量和变量

二、基础数据类型 

1、整型

①整型常量(3种):

②整型变量(8种):

​编辑          ③变量给值 

④整型数据的存储 

⑤整型类型取值范围 

⑥整数的溢出   

2、浮点型

①常量形式       

②浮点型变量         

③浮点型的比较

3、字符型

①字符型常量        

②字符型变量 

③应用


补充:vi编辑常用快捷指令

            1、yy + p :复制

                  Nyy + Mp :N和M表示数字,Nyy 表示复制从光标开始N行内容,Mp表示复制M份

             2、dd :删除

                  Ndd :N表示数字,删除光标所在行开始的N行内容

             3、dd + p :剪切

             4、Shift + v :选中,配合方向键进行操作

             5、u :撤销                  ctrl + r :反撤销 

C语言基础学习(一)

一、常量和变量

常量  "在程序运行过程中", 不能改变的量。

变量  "在程序运行过程中", 能被改变的量 。

         变量名(标识符)规则: 
                   ①.数字、字母、下划线组成
                   ②.开头不能是数字 
                   ③.不能与关键字重名 
                   ④.不要和预处理命令及库函数名重名  
                   例:
                        int a_1;       -----合法
                        int 1_a;       --
---名字不合法 

二、基础数据类型 

整型、字符型、浮点型、构造数据类型、指针类型、空类型

1、整型

①整型常量(3种):

    123        ----->十进制的整型常量 
     0x123   ----->十六进制的整型常量 
     0123     ----->八进制的整型常量 

进制间的转换:

十进制 ===> 二进制        方法: 除2取余法(辗转相除法)

例:将十进制数123转变为二进制数
     2|123
       2|61      ... 1     (低位)
        2|30     ... 1 
         2|15    ... 0
          2|7     ... 1
           2|3    ... 1
            2|1   ... 1
             2|0  ... 1     (高位)

结果:1111011(2)


二进制 ===> 十进制         方法:加权求和 

例:将二进制数1111011转变为十进制数
                   64     32    16      8     4      2     1
2的平方 : 2^6   2^5   2^4   2^3  2^2  2^1  2^0
二进制:      1      1      1       1      0      1     1  
结果:123(10)


二进制 ===> 八进制 

 0      1      2      3       4       5       6       7  
 0      1     10    11    100   101   110    111

对应关系:1位八进制数对应3位二进制数 


二进制 => 十六进制 
对应关系:1位十六进制进制数 对应 4位 二进制数 

②整型变量(8种):

   int         4字节
   short       2字节
   long        8字节
   long long   8字节 

   unsigned / signed

   注:sizeof(运算数) 计算运算数所代表的数据类型占用的内存空间的字节数,运算数 可以是一个     类型名。

  1 #include<stdio.h>
  2 
  3 int main(void)
  4 {
  5     printf("szieo(int)=%ld\n",sizeof(int));
  6     printf("szieo(short)=%ld\n",sizeof(short));
  7     printf("szieo(long)=%ld\n",sizeof(long));
  8     printf("szieo(long)=%ld\n",sizeof(long long));
  9                                                                                                          
 10     return 0;
 11 }

运行结果:

         
 ③变量给值 

  int a = 10; //定义的同时给值 初始化 
  int a; 
  a = 10; //赋值 
  变量之所以能变 --- 变量实际上对应是一块可以被修改的空间
  小端:高高低低 
            高位数据 存在 高地址(地址编号大) 处 
            低位数据 存在 低地址 处          
  x86 体系结构 --- 小端模式 
  51 单片机 ---大端模式

④整型数据的存储 

    整数:计算机最终存储的都是他们的补码形式 
               正数:原码 反码 补码 都是一样的      
               负数:反码 + 1

  例:123 
           0111 1011 //原码
           0111 1011 //反码 
           0111 1011 //补码    
     例:-7  
            1|000 0000 0000 0000 0000 0000  0000 0111 //原码 

            1|111 1111 1111 1111 1111 1111  1111 1000 //反码 

            1|111 1111 1111 1111 1111 1111  1111 1001 //补码
            十六进制:f     f    f    f    f    f     f     9  
         

负数的反码是原码的符号位不变 其余位按位取反 )

⑤整型类型取值范围 

   int         4字节     
   unsigned int  0~2^32-1
   signed int  -2^31 ~ 2^31- 1
   short       2字节   
   unsigned short 0~2^16-1 //65535
   signed short   -32768 ~ 32767 
   long        8字节
   long long   8字节 

⑥整数的溢出   

   整数 存储 和 使用 分开的 
  unsigned short a = 65535;   //1111 1111 1111 1111 
  unsigned short b = -65535;  
  1 1111  1111  1111  1111 
  1 0000 0000 0000 0001

2、浮点型

①常量形式       

1.23   
1.23e-4   //科学计数法形式 1.23 * 10^-4
1.23E-4 

②浮点型变量         

float              4字节 
double          8字节 
long double 16字节 

③浮点型的比较

代码中出现的变量或常量 一定有其对应的数据类型
代码中出现的 浮点型常量 默认识别为 double 类型 
  

  0.9  *  2 = 1.8 --- 1
  0.8  *  2 = 1.6 --- 1
  0.6  *  2 = 1.2 --- 1
  0.2  *  2 = 0.4 --- 0
  0.4  *  2 = 0.8 --- 0
  0.8  *  2 = 1.6 --- 1
  .... 
  1.1101 ... * 2 ^ n  

   float 
  1位 符号位|8位 指数位  |23位 尾数位 
             +127
  double 
  1位 符号位|11位 指数位 |52位 尾数位
            +1023 

 
  浮点数的比较:保证精度一致、类型一致
      
  常量也可以指定类型:
  0.9f //表示被识别为 float类型 
  123 //默认识别为 int类型 
  123L //识别为long类型 
  123LU //unsigned long 
  123LL //long long 
  123LLU //unsigned long long 

3、字符型

①字符型常量        

 'a'      //字符常量 a这个常量 

②字符型变量 

char     1个字节

③应用

 0~32 控制字符(不可见字符) 
48~57 数字字符 '0' ~ '9'
65 ~90  英文的26个大写 字母的符号 
97 ~122 英文的26个小写 字母的符号 

char ch = '1';
printf("%d\n",ch - 48); //数值1  
printf("%d\n",ch - '0'); //数值1 

大写 转 小写  +32 

练习: 请编译程序将“China ”译成密码,用原来字母后面的第4个字母代替原来的字母。例如:字母A后面的第四个字母是E,用E代替A。因此"China"应译为"Glmre"。请编一道程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量分别为'C','h','i','n','a',经过运算,使c1,c2,c3,c4,c5分别为'G','l','m','r','e',然后输出。

  1 #include<stdio.h>
  2 
  3 int main(void)
  4 {
  5     char m1 = 'C';
  6     char m2 = 'h';
  7     char m3 = 'i';
  8     char m4 = 'n';
  9     char m5 = 'a';
 10 
 11     printf("%c%c%c%c%c\n",m1+4,m2+4,m3+4,m4+4,m5+4);                                                     
 12 }
  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值