C语言学习笔记三、数据溢出,(二/八/十/十六)进制之间的转换,常量、变量。

本文详细阐述了数据溢出的圆形法则,举例说明了不同数据类型在超出范围后的存储情况。同时,深入探讨了二、八、十、十六进制之间的转换方法,包括具体的转换步骤和实例。此外,还介绍了C语言中的常量和变量概念,包括它们的使用、定义以及变量命名规则。
摘要由CSDN通过智能技术生成

三、数据溢出,(二/八/十/十六)进制之间的转换,常量、变量。

1.数据溢出:

数据溢出遵从圆形法则。

例如:
    unsigned char a = 300;//300已经超出'a'的取值范围,a里面存储的数据实际是44                                                                                                                               //44 = (300%256);
    unsigned char a = -10; //-10已经超出'a'的取值范围,a里面存储的数据实际是246
                                                            //246 = (256-10)

2.进制之间的转换:

①二进制转换为(八/十/十六)进制 (二进制由0/1组成)

1)假设有二进制数 001101010110
                                        //421 421 421 421
   二进制转八进制:将二进制数三个三个分开--》001 101 010 110
                将二进制数计算后转化    --》 1   5   2   6
                由此可得二进制数001101010110转换成八进制数为1526;
                
2)假设有二进制数 0111
   二进制转十进制:1*2^0 + 1*2^1 + 1*2^2 + 0*2^3 = 1+2+4+0 = 7;
   
3)假设有二进制数 001101010110        //8421 8421 8421 
   二进制转十六进制:将其四个四个分开: 0011 0101 0110
                  计算后转换   --》     3    5   6
                  由此可得二进制数001101010110转换成十六进制数为356;

②八进制转换为(二/十/十六)进制 (八进制由0~7组成)

1)假设有八进制数 0237
   八进制转二进制:将八进制数一个个拆开--》   2   3   7
                 转化为二进制--》          010 011 111
                 由此可得八进制数0237转换成二进制数为 010011111;
                 
2)假设有八进制数 0237
   八进制转十进制:7*8^0 + 3*8^1 + 2*8^2 + 0*8^3 = 7+24+128+0 = 159;
   
3)假设有八进制数 0237
   八进制转十六进制:先将八进制数转成二进制数
                    将八进制数一个个拆开--》   2   3   7
                    转化为二进制--》         010 011 111
                                         //8421 8421
                    再转化为十六进制--》    1001 1111  --》9F;
//十六进制转八进制方法相同!!!

③十进制转换为(二/八/十六)进制 (十进制由0~9组成)

1)假设有十进制数100
   十进制转八进制:将十进制数100一直除八取余--》100/8=12---4;
                                             12/8 =1----4;  //从下往上读余数,就是
                                             1/8  =0----1;  //转换出来的八进制数;
                                             0/8  =0----0;
                  由此可得十进制数100转化成八进制数为0144;
                
2)假设有十进制数10
   十进制转二进制:二分法    --》10/2=5---0;
                                5/2=2----1;    //从下往上读余数,就是
                                2/2=1----0;    //转换出来的二进制数;
                                1/2=0----1;
                  由此可得十进制数10转化成二进制数为1010;
                
3)假设有十进制数100
   十进制转十六进制:将十进制数100一直除十六取余--》100/16=6---4;//从下往上读余数,就是
                                                  6/16 =0---6;//转换出来的十六进制数;
                                                  0/16 =0---0;
                  由此可得十进制数100转化成十六进制数为064;

④十六进制转换为(二/十)进制 (十六进制由0~F组成)

1)假设有十六进制数0x64
   十六进制转二进制:将十六进制数64拆开 --》   6     4;
                  转化为二进制--》          0110  0100;
                                         //8421  8421
                  由此可得十六进制数64转化成二进制数为01100100;
                  
2)假设有十六进制0x64
   十六进制转十进制:4*16^0 + 6*16^1 = 4 + 96 = 100;

3.常量和变量:

①. 常量:常量就是不能被赋值的量。

例如:1,10,3.14,'a', ' A' '你好', ‘HELLO’...等

其中,‘A’ == 65 ,字符的本质就是一个整数,是常量;

”HELLO“,字符串是由多个字符组成的,所以也是常量。

注意:”HELLO“中一共有6个字节(H,E,L,L,O,\0);每个字符串后面都会有一个隐藏的字符‘\0’,表示字符串结束。

②. 计算字符串长度的方式。

1)sizeof (”字符串/关键字(包括‘\0’)“)

例如:sizeof("hello") ==6。

2)strlen(”字符串“),只会计算字符串的有效数据(不包括‘\0’);

例如 strlen(”hello world“)==11。

注意:使用strlen时,要添加头文件string.h。

③. 零值

int 0;

float 0.0;

char '\0'

指针 NULL 或者(void*)0x0。

④. 变量:变量就是可赋值的量。

1)使用变量前要先定义

2)定义变量的本质

例如: int a=100; 表示:  //系统分配了4个字节内存(sizeof(int)),并把其命名为a,
                        //把100转换成二进制数储存到a这块内存中。
      char b='c';表示:  //系统分配了1个字节内存(sizeof(char)),并把其命名为b,
                        //把字符'c'的ASCII码值转化为二进制储存到b这块内存中。

3)如何定义一个变量

            数据类型 + 变量名      
例如:                 
            int         a
            char        b

4)变量名命名规则

1.由数字、字母和下划线组成;
2.必须是字母或下划线开头;
3.不能以C语言中的关键字来命名;
4.取变量名时,尽量取一些有意义的名字,一看到变量名就知道这个变量表示什么。
5.C语言中的关键字如下:
while for if else do switch default case break continue goto return char short int long double float void unsigned signed struct union enum register const volatile auto static extern typedef sizeof。
​
注意:当变量名与函数名冲突时,函数就不能再使用了!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值