2、C语言:变量与常量

C语言的符号

  • C语言的基本符号构成
    数字、字母、运算符
    特殊符号:_(下划线)、\r(回车)、\n(换行)、\t(tab制表符)
    关键字/保留字:C语言预先规定的32个有特殊意义的单词,例如void、return等等
    标识符:变量名、函数名、文件名、类型名等等
  • 标识符的命名规则
    只能由字母、数字和下划线组成
    首字符不能为数字
    区分大小写
    不能使用保留字

变量

  • 变量的定义:在程序执行期间其值可以改变的量,必须先定义后使用
  • 定义变量的格式:类型说明符 变量名1,变量名2, .... ,变量名n;
  • 变量的属性:变量类型决定变量在内存中的存储单元大小和存储方式
  • 变量的初始化:变量可以在定义的时候进行赋值,或者先定义后赋值
    int a=b=c=5; 是不正确的,因为这句话等价于定义了a并赋值为5并且给b和c赋值为5,但bc都还没定义不能赋值
    int a,b,c; a=b=c=5; 是可以的,因为等价于先定义了abc,然后再赋值

C语言数据类型

  • 数据类型的分类
    在这里插入图片描述

  • 数据类型所占字节数及能表达的数字范围

    类型说明符字节数取值范围解释
    int4(-231, 231-1)用4个字节共32位表示,最高一位表示符号,所以是231,还有个0,所以-1
    short int2(-215, 215-1)用2个字节共16位表示,最高一位表示符号,所以是215,还有个0,所以-1
    long int4(-231, 231-1)用4个字节共32位表示,最高一位表示符号,所以是231,还有个0,所以-1
    unsigned int4(0, 232-1)用4个字节共32位表示,最高一位表示数字,所以是232,还有个0,所以-1。
    没有符号位所以表示不了负数
    unsigned short int2(0, 216-1)用2个字节共16位表示,最高一位表示数字,所以是216,还有个0,所以-1。
    没有符号位所以表示不了负数
    unsigned long int4(0, 232-1)用4个字节共32位表示,最高一位表示数字,所以是232,还有个0,所以-1。
    没有符号位所以表示不了负数
    float4(-3.4×1038, 3.4×1038)
    double8(-1.7×10308, 1.7×10308)
    long double8(-1.7×10308, 1.7×10308)
    char1(-27, 27-1)用1个字节共8位表示,最高一位表示符号,所以是27,还有个0,所以-1
  • 十进制小数与二进制小数相互转换

    部分十进制转二进制二进制转十进制
    整数部分用2整除十进制整数,可以得到一个商和余数;
    再用2去除商,又会得到一个商和余数
    如此进行,直到商为小于1时为止
    然后把先得到的余数作为二进制数的低位有效位
    后得到的余数作为二进制数的高位有效位
    依次排列起来
    直接计算 N = n1×20+n2×21+…+nk×2k-1
    小数部分用2乘十进制小数,可以得到积,将积的整数部分取出
    再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出
    如此进行,直到积中的小数部分为零
    此时0或1为二进制的最后一位
    或者达到所要求的精度为止。
    从小数点后开始,依次乘以2的负一次方
    2的负二次方,2的负三次方等。最后相加

    举例:
    1)十进制5.875转为二进制
    整数部分 = 101(5/2=2余1,最后一位为1;2/2=1余0,倒数第二位为0;1/2=0余1,倒数第三位为1)
    小数部分 = 111(0.857×2=1.75,第一位为1;0.75×2=1.5,第二位为1;0.5×2=1,第三位为1)
    所以 5.875 = 101.111
    2)二进制110.101转为十进制
    整数部分 = 6(0×20+1×21+1×22
    小数部分 = 0.625(1×2-1+0×2-1+1×2-3
    所以 110.101 = 6.625

  • 浮点类型详细解释
    任何一个浮点数都可以用以2为底的科学计数法表示
    即,N=数符×2E×M
    其中数符的值决定数的正负,阶码E的位数决定数的范围,尾数M的位数决定数的精度
    E不能全为0或者全为1

    float类型用4个字节共32位存储,数符1位+阶码8位+尾数23位
    阶码是8位,所以能表示(-128,127)之间的数
    尾数23位,所以小数点后能有23位数
    所以,float最大能表示的是 1.11111111111111111111111*2127 ≈ 2*2127 ≈ 3.4*1038
    最小能表示的是 -1.11111111111111111111111*2127 ≈ -2*2127 ≈ -3.4*1038
    注意,最小能表示的不是 -1.11111111111111111111111*2-128 ≈ -2*2-128 ≈ -1.5*10-39
    在这里插入图片描述
    double类型用8个字节共64位存储,原理与上述类似
    在这里插入图片描述
    假设要存储float类型数据 -5.875
    1)该数是负数,所以数符位为1
    2)将十进制转为二进制,-5.875 = -101.111 = (-1)1×1.01111×22
    3)因为M的值一定是1<= M <2,所以规定M在存储时舍去第一个1,只存储小数点之后的数字
    4)因此实际存储的二进制位 1 10000010 01111000000000000000000

常量

  • 常量的分类
    数值常量、符号常量、字符常量、字符串常量
  • 数值整型常量
    可以用不同进制表示
    十进制数:0~9
    八进制数:0~7,以0开头
    十六进制数:0~9,A~F/a~f,以0x或0X开头
    长整型数:在整数后加上L或l
    例如:100、-8、0;010、024;0x18、0X1F;123L、456l
  • 数值浮点型常量
    十进制数形式:由数字、小数点和正负号组成(必须有小数点),例如23.789、.678、23.
    指数形式:由数字、小数点、字母e/E和正负号组成(e/E之前必须有数字且其后的指数必须为整数)例如2.5E-5、2e3
    浮点型常量后加f或F表示按照单精度存储和运算
    例如:1.2345f、3.1415926F
  • 符号常量/宏常量
    定义:用一个符号代表一个常量,必须在函数的开始用宏定义声明后使用
    格式:#define 宏名 符号串,宏名常用全大写表示,符号串可以是常量/表达式/格式串等
    功能:在程序编译时,先将符号串替换程序中所有宏名,再进行编译
    例子:
    #include<stdio.h>
    #define PI 3.1415926			// PI是宏名,这一句不用加分号
    int main(){
    	float s,r=10;
    	s=PI*r*r;					// 这里使用PI,在编译的时候就会替换成3.14
    	printf("s=PI*r*r=%f",s);	// 字符串中的宏名不会被替换,即此处的PI还是输出PI
    	return 0;
    }
    
  • 字符常量
    定义:用来表示一个字符值,存储的是字符的ASCII码
    格式:用单引号括起来的一个字符
    例如:‘a’、‘A’、’$’、‘1’
  • 字符串常量
    定义:用来表示一串字符
    格式:用双引号括起来的一个或多个字符
    例如:“abc”、“a”、"\n"
  • 转义字符
    定义:用转义符号“\”表示的字符,表示将其后的字符原本的含义进行转换,变成另一个含义
    转义字符功能
    \n换行
    \r回车,光标回到当前行首,如果接着输出的话,本行以前的回内容会被逐一覆盖
    \t制表符,相当于空8列
    \b退格
    \\反斜线字符
    \’单引号字符
    \"双引号字符
    \ddd1到3位八进制数表示的字符
    \xdd1到2位十六进制数表示的字符
    例如:
    #include<stdio.h>
    int main(){
    	printf("123456\n");				// 输出数字,然后换行
    	printf("c\tlanguags\be\rC\n");	// c,\t表示制表所以空8列,languags,\b表示光标退一个,然后再输出e覆盖s
    									// \r表示回车,光标回到行首,然后输出C覆盖原本的c
    	printf("is\tusef\165\x6c");		// \t为制表符,\165为八进制表示的字符,转为十进制后为117,对应ASCII码的字符u
    									// \x6c为十六进制表示的字符,转为十进制后为108,对应ASCII码的l
    	return 0;
    }
    
    在这里插入图片描述
  • const定义常量
    C语言中有个很重要的关键字 const
    该关键字的作用是将一个变量定义为一个不能改变的量
    具体用法后面再说,要记住这个很重要!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值